{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "95eec7b5-30a1-480d-ad79-e157b20f6b4d",
   "metadata": {},
   "outputs": [],
   "source": [
    "from utils.load_data import load_in_file\n",
    "from utils.preprocessing import *\n",
    "import json\n",
    "import numpy as np\n",
    "import datetime\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "96e959d3-d241-4428-9de4-9bcf96f4e2be",
   "metadata": {},
   "outputs": [],
   "source": [
    "data = read_apm_pod()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "60dc0d53-055d-42de-9977-c61a5531cdfe",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['time', 'client_error', 'client_error_ratio', 'error', 'error_ratio',\n",
       "       'object_id', 'object_type', 'request', 'response', 'rrt', 'rrt_max',\n",
       "       'server_error', 'server_error_ratio', 'timeout', 'timestamp'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "3a640709-0529-49d0-afd3-cc6670a20ecb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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AQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApudyYNm0aZOGDh2qyMhIWSwWrV279qL1V69erZtvvlktW7ZUYGCg4uLi9OmnnzrVmTVrliwWi9PSuXNnV5sGAAA8lMuBpaCgQDExMVqwYEG16m/atEk333yz1q1bp/T0dA0cOFBDhw7Vl19+6VSva9euys7OdiybN292tWkAAMBD+bj6gMGDB2vw4MHVrj9v3jyn+88995w+/PBD/eMf/1CvXr3ON8THR+Hh4a42BwAANAL1PofFbrfr9OnTat68uVP5/v37FRkZqfbt22vkyJHKysqqchuFhYWy2WxOCwAA8Fz1Hlhefvll5efn6+6773aUxcbGaunSpUpJSdEbb7yhzMxM9e/fX6dPn650G8nJyQoKCnIsUVFR9dV8AADgBhbDMIwaP9hi0Zo1azRs2LBq1X/33Xc1btw4ffjhh4qPj6+yXl5entq2bau5c+dq7NixFdYXFhaqsLDQcd9msykqKkqnTp1SYGCgy/0AAAD1z2azKSgoqFrf3y7PYamplStX6r777tP7779/0bAiScHBwerYsaMOHDhQ6Xqr1Sqr1VoXzQQAACZUL7uEVqxYocTERK1YsUJDhgy5ZP38/HwdPHhQERER9dA6AABgdi6PsOTn5zuNfGRmZiojI0PNmzdXmzZtNH36dB05ckTLly+XVLobaPTo0Zo/f75iY2OVk5MjSfL391dQUJAkacqUKRo6dKjatm2ro0ePaubMmfL29taIESNqo48AAKCBc3mEZfv27erVq5fjkOSkpCT16tVLM2bMkCRlZ2c7HeHz5ptv6ty5c3rggQcUERHhWCZNmuSo88MPP2jEiBHq1KmT7r77brVo0UJbtmxRy5YtL7d/AADAA1zWpFuzcGXSDgAAMAdXvr+5lhAAADA9AgsAADA9AgsAADA9AgsAADA9AgsAADA9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pkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAApkdgAQAAplejwLJgwQJFR0fLz89PsbGx2rZtW5V1ly5dKovF4rT4+fk51TEMQzNmzFBERIT8/f0VHx+v/fv316RpAADAA7kcWFatWqWkpCTNnDlTO3bsUExMjBISEnTs2LEqHxMYGKjs7GzHcvjwYaf1L774ol577TUtXLhQW7duVdOmTZWQkKCzZ8+63iMAAOBxXA4sc+fO1bhx45SYmKguXbpo4cKFCggI0OLFi6t8jMViUXh4uGMJCwtzrDMMQ/PmzdOTTz6p2267TT169NDy5ct19OhRrV27tkadAgAAnsWlwFJUVKT09HTFx8ef34CXl+Lj45WWllbl4/Lz89W2bVtFRUXptttu01dffeVYl5mZqZycHKdtBgUFKTY2tsptFhYWymazOS0AAMBzuRRYTpw4oZKSEqcREkkKCwtTTk5OpY/p1KmTFi9erA8//FBvv/227Ha7+vXrpx9++EGSHI9zZZvJyckKCgpyLFFRUa50AwAANDB1fpRQXFycRo0apZ49e+rXv/61Vq9erZYtW+ovf/lLjbc5ffp0nTp1yrF8//33tdhiAABgNi4FltDQUHl7eys3N9epPDc3V+Hh4dXaRpMmTdSrVy8dOHBAkhyPc2WbVqtVgYGBTgsAAPBcLgUWX19f9e7dW6mpqY4yu92u1NRUxcXFVWsbJSUl2r17tyIiIiRJ7dq1U3h4uNM2bTabtm7dWu1tAgAAz+bj6gOSkpI0evRo9enTR3379tW8efNUUFCgxMRESdKoUaPUunVrJScnS5KefvppXX/99br66quVl5enl156SYcPH9Z9990nqfQIosmTJ+uZZ55Rhw4d1K5dOz311FOKjIzUsGHDaq+nAACgwXI5sAwfPlzHjx/XjBkzlJOTo549eyolJcUxaTYrK0teXucHbn766SeNGzdOOTk5CgkJUe/evfWf//xHXbp0cdR59NFHVVBQoPvvv195eXm68cYblZKSUuEEcwAAoHGyGIZhuLsRl8tmsykoKEinTp1iPgtQ3qyg0p+x46XBL7i3LQBwAVe+v7mWEAAAMD0CCwAAMD0CCwAAMD0CCwAAMD0CCwAAMD0CCwAAMD0CC9AoWNzdAAC4LAQWoFFo8KdbAtDIEVgAAIDpEVgAAIDpEVgAAIDpEVgAAIDpEVgAAIDpEViARoHDmgE0bAQWoFHgsGYADRuBBQAAmB6BBQAAmB6BBQAAmB6BBWgUmHQLoGEjsAAAANMjsAAAANMjsACNAoc1A2jYCCwAAMD0CCwAAMD0CCwAAMD0CCxAo8BhzQAaNgILAAAwPQILAAAwPQIL0ChwWDOAho3AAgAATI/AAjQKTLoF0LARWAAAgOkRWAAAgOkRWAAAgOkRWAAAgOkRWIBGgcOaATRsBBYAAGB6NQosCxYsUHR0tPz8/BQbG6tt27ZVWXfRokXq37+/QkJCFBISovj4+Ar1x4wZI4vF4rQMGjSoJk0DUCkOawbQsLkcWFatWqWkpCTNnDlTO3bsUExMjBISEnTs2LFK62/YsEEjRozQF198obS0NEVFRemWW27RkSNHnOoNGjRI2dnZjmXFihU16xEAAPA4LgeWuXPnaty4cUpMTFSXLl20cOFCBQQEaPHixZXWf+edd/THP/5RPXv2VOfOnfXXv/5VdrtdqampTvWsVqvCw8MdS0hISM16BKCUwbwVAJ7DpcBSVFSk9PR0xcfHn9+Al5fi4+OVlpZWrW2cOXNGxcXFat68uVP5hg0b1KpVK3Xq1EkTJkzQyZMnq9xGYWGhbDab0wIAADyXS4HlxIkTKikpUVhYmFN5WFiYcnJyqrWNadOmKTIy0in0DBo0SMuXL1dqaqpeeOEFbdy4UYMHD1ZJSUml20hOTlZQUJBjiYqKcqUbQOPACAsAD+JTn0/2/PPPa+XKldqwYYP8/Pwc5ffcc4/jdvfu3dWjRw9dddVV2rBhg2666aYK25k+fbqSkpIc9202G6EFqIDAAsBzuDTCEhoaKm9vb+Xm5jqV5+bmKjw8/KKPffnll/X888/rs88+U48ePS5at3379goNDdWBAwcqXW+1WhUYGOi0AAAAz+VSYPH19VXv3r2dJsyWTaCNi4ur8nEvvvii5syZo5SUFPXp0+eSz/PDDz/o5MmTioiIcKV5AMpjlxAAD+LyUUJJSUlatGiRli1bpq+//loTJkxQQUGBEhMTJUmjRo3S9OnTHfVfeOEFPfXUU1q8eLGio6OVk5OjnJwc5efnS5Ly8/M1depUbdmyRYcOHVJqaqpuu+02XX311UpISKilbgIAgIbM5Tksw4cP1/HjxzVjxgzl5OSoZ8+eSklJcUzEzcrKkpfX+Rz0xhtvqKioSHfeeafTdmbOnKlZs2bJ29tbu3bt0rJly5SXl6fIyEjdcsstmjNnjqxW62V2D2jMGGEB4DkshtHwx41tNpuCgoJ06tQp5rMAZUqKpTmhpbdjJ0iDn3dvewDgAq58f3MtIcBTNfy/RQDAgcACeCwCCwDPQWABAACmR2ABPBW7hAB4EAILAAAwPQIL4LEYYQHgOQgsAADA9AgsgKdiDgsAD0JgATwWgQWA5yCwAAAA0yOwAJ6KXUIAPAiBBQAAmB6BBfBYjLAA8BwEFgAAYHoEFsBTMYcFgAchsAAei8ACwHMQWAAAgOkRWABPxS4hAB6EwAIAAEyPwAJ4LEZYAHgOAgsAADA9AgvgqZjDAsCDEFgAAIDpEVgAAIDpEVgAT8UuIQAehMACAABMj8ACeCxGWAB4DgILAAAwPR93N6DRO1ckyZCKz0i+zST7OamkWGriL3k3cXfrLl9JsVRSJFm8S/t27qzkFyyVFEq+Td3dOs/mNIfFxdGWooLS187LWzpXKAW0kCyWWm2ey+x26ecfnct8/CRrM/e0py6ctZX+vpTxbiL5BbmvPY3FmR8lw15628da+p4vu+3jV/3P4sreoxYvKaB57bW1ESOwuNPZU9Kfr5Pycytf/2hmw36jZ++U/vKrqtcPel66fkL9tafRKRdSXJmA+9+3pI+TnMs6DpJ+t6p2mlUThiEtGSR9v9W53MtHGrFK6hDvnnbVpj0fSB+Mk4wS5/LY8dLgF9zTpsZg3aPStr9Uvd6riTQtU7JeceltLfuNdPjfFctjJ0iDn695GyGJXULudfzbqsOKJO16r/7aUhc+feLi61Pn1E874Jp/za1Y9m2KVHCy/ttSxn6uYlgpKz+wvv7bUxcOp1UMK1LD/xwwu8xNF19vL5ZOHrz0duz2ysOKJB3a7Hq7UAGBxZ2Kz1x8vZd3/bSjrlxqF0JxQf20o7Gq6S6hc2crLz954LKac1nKhugl6fGj0qxT0tDXSu+f+NY9baptJb/0ceCTpf176MvS++X7jtpX9jk89p/ny1p2dq5TfjddVUrKvU6PfV/6Go75uOI61BiBxZ08PbB4ecAcnMbIx1p5uTs/dJ3mdfzSvisiSn+ecePIT20690sffXxLf5b1ky+7ulX2OewbUHWd6oTG8nXKfoe8fav/eFwSgcWdLhVYLA09sDBFyr1qOIelqgmG7vzQLXtui5fk/cv7qolf6c/iKkaEGpqyYFIWVMq+9OznSnc3oG4U/1z6s4l/1XWqExqdQrWv88/qjNDgkggs7lR0qRGWBv6FX9kXX0PvU2NQ9iF7oap2FdWHC7/MJcnnly8Yd7arNl04wlJ+pItRlrphGKVHxElSk/JHLV6wO/tcNQJHWaj29j2/O7zsNWSEpVYQWNypLNlXxd2HkV6uynZpdf1t/bejsarpHJaS4srL3TrCcsGXuVTuy8BDAsuFoax8OOMLr26cK5Tjd6O2RljKv26MsNQqAou7fL9Nytx48ToN+UPKMKRv1lUsD7qy/tvSaNVwl1BVuyrNNsLSxNNGWMqd+0NyHqHkC69ulH+vN7nYHBYXRlgqDdUN+LPcRGoUWBYsWKDo6Gj5+fkpNjZW27Ztu2j9999/X507d5afn5+6d++udeucv8gMw9CMGTMUEREhf39/xcfHa//+/TVpWsNQeFpaNlT65qOL12vIb/LMjaWHA5bXtJUU0ta5rOTcpbd11iYd+rd07OvSwwur8xjUXNmuyvDuzuXuDAaOEZbyu4R+ue0xc1jK/kL/5QvPYjkf0BryZ4GZle0O8vY9PzdKKn3vlz9SqFojLJWE6rLb9mLmIdUClwPLqlWrlJSUpJkzZ2rHjh2KiYlRQkKCjh07Vmn9//znPxoxYoTGjh2rL7/8UsOGDdOwYcO0Z88eR50XX3xRr732mhYuXKitW7eqadOmSkhI0NmzHvJBdKHTOaUf/t6+UtT1Upt+UpfbpOA20pBy58BoyPutj1dyqGniJ1L3u6Tr7jtfdjbv0tt6f7S09H+l16+X/nStNKeF9Gp36afDtdZcj1STXULnCqWi06W371xaesKrltecX+cuJeXmB5Qpm8NSUugZV6a+cISl/G1GWOpG2RFm/r+coPP+DdJ140pP1Ff+RInVOkqost2W5W7zGl42lwPL3LlzNW7cOCUmJqpLly5auHChAgICtHjx4krrz58/X4MGDdLUqVN1zTXXaM6cObr22mv15z//WVLp6Mq8efP05JNP6rbbblOPHj20fPlyHT16VGvXrr2szplWwYnSn0FXSmM/lf7wiXT3cmnybum6sdK1o0rXV2cY8lJOHJC2LZLslZyQqi6dPup8P2aEFHp16en4h7wiWX853fjPP116W9//t2LZqSzpYOrltxPOyj7ALd5S8/alZ+ds3bu0zAxHCVX2ZV5+fUN24QhL+due0D8zOvPLZ3HT0NKfkb2kIS+XnmE8JFrqdmdpuSvnYalshKX8etSYS4dsFBUVKT09XdOnT3eUeXl5KT4+XmlpaZU+Ji0tTUlJzqf5TkhIcISRzMxM5eTkKD7+/Km1g4KCFBsbq7S0NN1zzz0VtllYWKjCwvMvvs1mc6Ub1VdyTvrHpHIFF8wJMMoN8TkmyFqquK/z921HSm8GhFb+vGVv8q8/lPIOO2/L1dtlp5z+9HEppuL/pVN/LsWVScA7ljvfLztnRhn/YKnwlLR+5iUuP2Cc/4v/0UzJGih98qi0/S1p+2LpSHr5BlZsp2GUbkOW0kNiZZwvu7DLlgo3Lq6mk6LLP79hL7195qT043el1+wpKSqt4xf0S5vLnstS8WeV6+S8C+fQZunDibrkSEvhL//XAS0kr1+euywYfLVG+rEaZ/ysst81f6jjd6b8l3n5SZJr/l/pEWg+VlX79asPFZpyQUH599CpX/pYWSj74L7zu+gsXudfG+OXfxzvqbL3u5xvW7xU6XvEFVV9Rli8SrvleD+r3PO4/jT1qmyUtmkVn8Vl//+73pNyv6piI7/083TOL4+pJHBK0ur7L3iecv85F35fOJXVlAuPr+5zeTWR/vfFmjWnFrgUWE6cOKGSkhKFhYU5lYeFhembb76p9DE5OTmV1s/JyXGsLyurqs6FkpOTNXv2bFeaXjOGXcp4u+62f+F8jjLNWpX+zNldutSGkqKKIaI+3PJM6dyTGx92Lg9uUxrG9n1cve00bSn5h5T+YkXElJbV5v+PWdTV2WRPfOvaGWHLvzcd78ddpYs7lbVFKp2U6h9SOkq3d63bmlTrmrYsdzu0NKwd+6p0Qd0IruKzuOy1yM4oXaqj/Ovn5VU6d6/gWOnlLRo6b2vDCSxmMX36dKdRG5vNpqioqNp/Ii9vKX7WBYXlE7BX6Reo4y+P8n/ZXOS+VJpUu91R+fP2vb/0isZlIwtOfzVduF3DefsX3j53Vjq+T2oTe5GOVpHqK8yBcDHxt7pG6jyk8nVD50tf/915lKoqhiG1H3i+bT2Glz7OaXeSUcn/u0ofU/Y4u/2XLlwwQuH0mMsZBnDh/8jxF+gv76EmAaXD/leEl/5Vl58r+ZZdbK2Kv5yrU1aUX/pXZGDE+ee7WPsNe+lIReffnC+OHV/6fqyVSylcxl+NXt6lc73KG/l/0qF/nT+rsqnnCVzw3qrsvdbiKim0w/n7wxZK337yy/vkl9MEGPbSk8lVNepWYfRN5UaEjct4j1f2/i7/niv//rqc56lnPtbzu34udMMkKTDy4if5LP+75+UtXXOr8/rf/5/03QUHIVQ2v8zpv+uC0fzaOsXF5b4mXjU6TqfWuBRYQkND5e3trdxc5wv25ebmKjw8vNLHhIeHX7R+2c/c3FxFREQ41enZs2el27RarbJaqzh9eG3y8q44MlAf/IOl2Pvr/3nrU4urav5/28RP6pNYu+1B1fyDpevHu7sVlbuyT+niqcK6lC5wj4DmUuz/u7xtRMScHxXGZXEpLvn6+qp3795KTT0/2dFutys1NVVxcXGVPiYuLs6pviStX7/eUb9du3YKDw93qmOz2bR169YqtwkAABoXl3cJJSUlafTo0erTp4/69u2refPmqaCgQImJpX/xjho1Sq1bt1ZycrIkadKkSfr1r3+tV155RUOGDNHKlSu1fft2vfnmm5Iki8WiyZMn65lnnlGHDh3Url07PfXUU4qMjNSwYcNqr6cAAKDBcjmwDB8+XMePH9eMGTOUk5Ojnj17KiUlxTFpNisrS17l9nP169dP7777rp588kk9/vjj6tChg9auXatu3bo56jz66KMqKCjQ/fffr7y8PN14441KSUmRn59fLXQRAAA0dBbDaCgzo6pms9kUFBSkU6dOKTAw0N3NAQAA1eDK9zfXEgIAAKZHYAEAAKZHYAEAAKZHYAEAAKZHYAEAAKZHYAEAAKZHYAEAAKZHYAEAAKZHYAEAAKbn8qn5zajsZL02m83NLQEAANVV9r1dnZPue0RgOX36tCQpKirKzS0BAACuOn36tIKCgi5axyOuJWS323X06FFdccUVslgstbptm82mqKgoff/9943uOkWNte+Ntd8SfafvjavvjbXfknn6bhiGTp8+rcjISKcLJ1fGI0ZYvLy8dOWVV9bpcwQGBja6N3SZxtr3xtpvib7T98alsfZbMkffLzWyUoZJtwAAwPQILAAAwPQILJdgtVo1c+ZMWa1Wdzel3jXWvjfWfkv0nb43rr431n5LDbPvHjHpFgAAeDZGWAAAgOkRWAAAgOkRWAAAgOkRWAAAgOkRWC5hwYIFio6Olp+fn2JjY7Vt2zZ3N+myJCcn67rrrtMVV1yhVq1aadiwYdq3b59TnbNnz+qBBx5QixYt1KxZM91xxx3Kzc11qpOVlaUhQ4YoICBArVq10tSpU3Xu3Ln67Mplef7552WxWDR58mRHmSf3+8iRI/r973+vFi1ayN/fX927d9f27dsd6w3D0IwZMxQRESF/f3/Fx8dr//79Ttv48ccfNXLkSAUGBio4OFhjx45Vfn5+fXfFJSUlJXrqqafUrl07+fv766qrrtKcOXOcrlviKX3ftGmThg4dqsjISFksFq1du9ZpfW31c9euXerfv7/8/PwUFRWlF198sa67dlEX63dxcbGmTZum7t27q2nTpoqMjNSoUaN09OhRp200xH5Ll37Nyxs/frwsFovmzZvnVN6g+m6gSitXrjR8fX2NxYsXG1999ZUxbtw4Izg42MjNzXV302osISHBWLJkibFnzx4jIyPD+N///V+jTZs2Rn5+vqPO+PHjjaioKCM1NdXYvn27cf311xv9+vVzrD937pzRrVs3Iz4+3vjyyy+NdevWGaGhocb06dPd0SWXbdu2zYiOjjZ69OhhTJo0yVHuqf3+8ccfjbZt2xpjxowxtm7danz33XfGp59+ahw4cMBR5/nnnzeCgoKMtWvXGjt37jRuvfVWo127dsbPP//sqDNo0CAjJibG2LJli/Gvf/3LuPrqq40RI0a4o0vV9uyzzxotWrQwPvroIyMzM9N4//33jWbNmhnz58931PGUvq9bt8544oknjNWrVxuSjDVr1jitr41+njp1yggLCzNGjhxp7Nmzx1ixYoXh7+9v/OUvf6mvblZwsX7n5eUZ8fHxxqpVq4xvvvnGSEtLM/r27Wv07t3baRsNsd+GcenXvMzq1auNmJgYIzIy0nj11Ved1jWkvhNYLqJv377GAw884LhfUlJiREZGGsnJyW5sVe06duyYIcnYuHGjYRilv+BNmjQx3n//fUedr7/+2pBkpKWlGYZR+kvi5eVl5OTkOOq88cYbRmBgoFFYWFi/HXDR6dOnjQ4dOhjr1683fv3rXzsCiyf3e9q0acaNN95Y5Xq73W6Eh4cbL730kqMsLy/PsFqtxooVKwzDMIy9e/cakoz//ve/jjqffPKJYbFYjCNHjtRd4y/TkCFDjD/84Q9OZb/97W+NkSNHGobhuX2/8Murtvr5+uuvGyEhIU7v92nTphmdOnWq4x5Vz8W+tMts27bNkGQcPnzYMAzP6LdhVN33H374wWjdurWxZ88eo23btk6BpaH1nV1CVSgqKlJ6erri4+MdZV5eXoqPj1daWpobW1a7Tp06JUlq3ry5JCk9PV3FxcVO/e7cubPatGnj6HdaWpq6d++usLAwR52EhATZbDZ99dVX9dh61z3wwAMaMmSIU/8kz+733//+d/Xp00d33XWXWrVqpV69emnRokWO9ZmZmcrJyXHqe1BQkGJjY536HhwcrD59+jjqxMfHy8vLS1u3bq2/zrioX79+Sk1N1bfffitJ2rlzpzZv3qzBgwdL8uy+l1db/UxLS9OvfvUr+fr6OuokJCRo3759+umnn+qpN5fn1KlTslgsCg4OluTZ/bbb7br33ns1depUde3atcL6htZ3AksVTpw4oZKSEqcvJ0kKCwtTTk6Om1pVu+x2uyZPnqwbbrhB3bp1kyTl5OTI19fX8ctcpny/c3JyKv1/KVtnVitXrtSOHTuUnJxcYZ0n9/u7777TG2+8oQ4dOujTTz/VhAkT9NBDD2nZsmWSzrf9Yu/1nJwctWrVymm9j4+Pmjdvbuq+P/bYY7rnnnvUuXNnNWnSRL169dLkyZM1cuRISZ7d9/Jqq58N9XegzNmzZzVt2jSNGDHCccE/T+73Cy+8IB8fHz300EOVrm9offeIqzWjZh544AHt2bNHmzdvdndT6tz333+vSZMmaf369fLz83N3c+qV3W5Xnz599Nxzz0mSevXqpT179mjhwoUaPXq0m1tXt9577z298847evfdd9W1a1dlZGRo8uTJioyM9Pi+w1lxcbHuvvtuGYahN954w93NqXPp6emaP3++duzYIYvF4u7m1ApGWKoQGhoqb2/vCkeJ5ObmKjw83E2tqj0TJ07URx99pC+++EJXXnmlozw8PFxFRUXKy8tzql++3+Hh4ZX+v5StM6P09HQdO3ZM1157rXx8fOTj46ONGzfqtddek4+Pj8LCwjyy35IUERGhLl26OJVdc801ysrKknS+7Rd7r4eHh+vYsWNO68+dO6cff/zR1H2fOnWqY5Sle/fuuvfee/Xwww87Rtk8ue/l1VY/G+rvQFlYOXz4sNavX+8YXZE8t9//+te/dOzYMbVp08bxmXf48GE98sgjio6OltTw+k5gqYKvr6969+6t1NRUR5ndbldqaqri4uLc2LLLYxiGJk6cqDVr1ujzzz9Xu3btnNb37t1bTZo0cer3vn37lJWV5eh3XFycdu/e7fRGL/sQuPCL0Sxuuukm7d69WxkZGY6lT58+GjlypOO2J/Zbkm644YYKh65/++23atu2rSSpXbt2Cg8Pd+q7zWbT1q1bnfqel5en9PR0R53PP/9cdrtdsbGx9dCLmjlz5oy8vJw/5ry9vWW32yV5dt/Lq61+xsXFadOmTSouLnbUWb9+vTp16qSQkJB66o1rysLK/v379c9//lMtWrRwWu+p/b733nu1a9cup8+8yMhITZ06VZ9++qmkBtj3ep/m24CsXLnSsFqtxtKlS429e/ca999/vxEcHOx0lEhDM2HCBCMoKMjYsGGDkZ2d7VjOnDnjqDN+/HijTZs2xueff25s377diIuLM+Li4hzryw7vveWWW4yMjAwjJSXFaNmypekP771Q+aOEDMNz+71t2zbDx8fHePbZZ439+/cb77zzjhEQEGC8/fbbjjrPP/+8ERwcbHz44YfGrl27jNtuu63SQ1579eplbN261di8ebPRoUMH0x3ae6HRo0cbrVu3dhzWvHr1aiM0NNR49NFHHXU8pe+nT582vvzyS+PLL780JBlz5841vvzyS8fRMLXRz7y8PCMsLMy49957jT179hgrV640AgIC3Hp478X6XVRUZNx6663GlVdeaWRkZDh95pU/6qUh9tswLv2aX+jCo4QMo2H1ncByCX/605+MNm3aGL6+vkbfvn2NLVu2uLtJl0VSpcuSJUscdX7++Wfjj3/8oxESEmIEBAQYt99+u5Gdne20nUOHDhmDBw82/P39jdDQUOORRx4xiouL67k3l+fCwOLJ/f7HP/5hdOvWzbBarUbnzp2NN99802m93W43nnrqKSMsLMywWq3GTTfdZOzbt8+pzsmTJ40RI0YYzZo1MwIDA43ExETj9OnT9dkNl9lsNmPSpElGmzZtDD8/P6N9+/bGE0884fRl5Sl9/+KLLyr93R49erRhGLXXz507dxo33nijYbVajdatWxvPP/98fXWxUhfrd2ZmZpWfeV988YVjGw2x34Zx6df8QpUFlobUd4thlDvlIwAAgAkxhwUAAJgegQUAAJgegQUAAJgegQUAAJgegQUAAJgegQUAAJgegQUAAJgegQUAAJgegQUAAJgegQUAAJgegQUAAJgegQUAAJje/wfiuK/kpmUBGgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data[['timestamp','rrt_max']].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "71cbf5cb-d3af-4cf1-87f9-21a8fc0912da",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>time</th>\n",
       "      <th>client_error</th>\n",
       "      <th>client_error_ratio</th>\n",
       "      <th>error</th>\n",
       "      <th>error_ratio</th>\n",
       "      <th>object_id</th>\n",
       "      <th>object_type</th>\n",
       "      <th>request</th>\n",
       "      <th>response</th>\n",
       "      <th>rrt</th>\n",
       "      <th>rrt_max</th>\n",
       "      <th>server_error</th>\n",
       "      <th>server_error_ratio</th>\n",
       "      <th>timeout</th>\n",
       "      <th>timestamp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2025-06-05T16:00:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>shippingservice</td>\n",
       "      <td>service</td>\n",
       "      <td>44</td>\n",
       "      <td>44</td>\n",
       "      <td>1078.18</td>\n",
       "      <td>1919</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749139200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2025-06-05T16:01:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>shippingservice</td>\n",
       "      <td>service</td>\n",
       "      <td>192</td>\n",
       "      <td>192</td>\n",
       "      <td>1096.86</td>\n",
       "      <td>3868</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749139260</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2025-06-05T16:02:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>shippingservice</td>\n",
       "      <td>service</td>\n",
       "      <td>28</td>\n",
       "      <td>28</td>\n",
       "      <td>1074.29</td>\n",
       "      <td>2200</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749139320</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2025-06-05T16:03:00Z</td>\n",
       "      <td>12</td>\n",
       "      <td>5.36</td>\n",
       "      <td>12</td>\n",
       "      <td>5.36</td>\n",
       "      <td>shippingservice</td>\n",
       "      <td>service</td>\n",
       "      <td>224</td>\n",
       "      <td>224</td>\n",
       "      <td>1081.62</td>\n",
       "      <td>2833</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749139380</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2025-06-05T16:04:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>shippingservice</td>\n",
       "      <td>service</td>\n",
       "      <td>26</td>\n",
       "      <td>26</td>\n",
       "      <td>971.65</td>\n",
       "      <td>1590</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749139440</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1416</th>\n",
       "      <td>2025-06-06T15:55:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>shippingservice</td>\n",
       "      <td>service</td>\n",
       "      <td>152</td>\n",
       "      <td>152</td>\n",
       "      <td>985.32</td>\n",
       "      <td>5830</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749225300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1417</th>\n",
       "      <td>2025-06-06T15:56:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>shippingservice</td>\n",
       "      <td>service</td>\n",
       "      <td>112</td>\n",
       "      <td>112</td>\n",
       "      <td>1072.03</td>\n",
       "      <td>4626</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749225360</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1418</th>\n",
       "      <td>2025-06-06T15:57:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>shippingservice</td>\n",
       "      <td>service</td>\n",
       "      <td>128</td>\n",
       "      <td>128</td>\n",
       "      <td>908.27</td>\n",
       "      <td>4118</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749225420</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1419</th>\n",
       "      <td>2025-06-06T15:58:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>shippingservice</td>\n",
       "      <td>service</td>\n",
       "      <td>152</td>\n",
       "      <td>152</td>\n",
       "      <td>916.32</td>\n",
       "      <td>5432</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749225480</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1420</th>\n",
       "      <td>2025-06-06T15:59:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>shippingservice</td>\n",
       "      <td>service</td>\n",
       "      <td>114</td>\n",
       "      <td>114</td>\n",
       "      <td>849.75</td>\n",
       "      <td>9940</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749225540</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1421 rows × 15 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                      time  client_error  client_error_ratio  error  \\\n",
       "0     2025-06-05T16:00:00Z             0                0.00      0   \n",
       "1     2025-06-05T16:01:00Z             0                0.00      0   \n",
       "2     2025-06-05T16:02:00Z             0                0.00      0   \n",
       "3     2025-06-05T16:03:00Z            12                5.36     12   \n",
       "4     2025-06-05T16:04:00Z             0                0.00      0   \n",
       "...                    ...           ...                 ...    ...   \n",
       "1416  2025-06-06T15:55:00Z             0                0.00      0   \n",
       "1417  2025-06-06T15:56:00Z             0                0.00      0   \n",
       "1418  2025-06-06T15:57:00Z             0                0.00      0   \n",
       "1419  2025-06-06T15:58:00Z             0                0.00      0   \n",
       "1420  2025-06-06T15:59:00Z             0                0.00      0   \n",
       "\n",
       "      error_ratio        object_id object_type  request  response      rrt  \\\n",
       "0            0.00  shippingservice     service       44        44  1078.18   \n",
       "1            0.00  shippingservice     service      192       192  1096.86   \n",
       "2            0.00  shippingservice     service       28        28  1074.29   \n",
       "3            5.36  shippingservice     service      224       224  1081.62   \n",
       "4            0.00  shippingservice     service       26        26   971.65   \n",
       "...           ...              ...         ...      ...       ...      ...   \n",
       "1416         0.00  shippingservice     service      152       152   985.32   \n",
       "1417         0.00  shippingservice     service      112       112  1072.03   \n",
       "1418         0.00  shippingservice     service      128       128   908.27   \n",
       "1419         0.00  shippingservice     service      152       152   916.32   \n",
       "1420         0.00  shippingservice     service      114       114   849.75   \n",
       "\n",
       "      rrt_max  server_error  server_error_ratio  timeout   timestamp  \n",
       "0        1919             0                   0        0  1749139200  \n",
       "1        3868             0                   0        0  1749139260  \n",
       "2        2200             0                   0        0  1749139320  \n",
       "3        2833             0                   0        0  1749139380  \n",
       "4        1590             0                   0        0  1749139440  \n",
       "...       ...           ...                 ...      ...         ...  \n",
       "1416     5830             0                   0        0  1749225300  \n",
       "1417     4626             0                   0        0  1749225360  \n",
       "1418     4118             0                   0        0  1749225420  \n",
       "1419     5432             0                   0        0  1749225480  \n",
       "1420     9940             0                   0        0  1749225540  \n",
       "\n",
       "[1421 rows x 15 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "read_apm_service()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "d52e6bfc-f4cd-4073-89a8-ce9b25a83558",
   "metadata": {},
   "outputs": [],
   "source": [
    "logs = [\n",
    "    'log-parquet/',\n",
    "    'metric-parquet/',\n",
    "    'trace-parquet/'\n",
    "]\n",
    "base_path = '/app/jupyter/aiops/aiopschallengedata2025/sample/abnormal/'\n",
    "\n",
    "# logname = 'log_filebeat-server_2025-04-28_03-59-00.parquet'\n",
    "logname = 'log_filebeat-server_2025-04-29_14-59-00.parquet'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "f11b908d-36b7-4547-9642-ec26cab92428",
   "metadata": {},
   "outputs": [],
   "source": [
    "tl = tracelog('/app/jupyter/aiops/phaseone/2025-06-06/trace-parquet/',datetime=['2025-06-06_10-00-00'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "710e0bfc-1462-4c71-9479-69232c842b80",
   "metadata": {},
   "outputs": [],
   "source": [
    "tl.preprocess()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "e015cff2-9695-40c4-8aba-6e116f9e74ea",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    3.789870e+05\n",
       "mean     1.749177e+09\n",
       "std      1.004052e+03\n",
       "min      1.749175e+09\n",
       "25%      1.749176e+09\n",
       "50%      1.749177e+09\n",
       "75%      1.749178e+09\n",
       "max      1.749179e+09\n",
       "Name: timestamp, dtype: float64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tl.data.timestamp.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "254f1de6-a3da-4c9d-8ca8-e78ca8b092cf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>traceID</th>\n",
       "      <th>spanID</th>\n",
       "      <th>flags</th>\n",
       "      <th>operationName</th>\n",
       "      <th>references</th>\n",
       "      <th>startTime</th>\n",
       "      <th>startTimeMillis</th>\n",
       "      <th>duration</th>\n",
       "      <th>tags</th>\n",
       "      <th>logs</th>\n",
       "      <th>...</th>\n",
       "      <th>peer_method</th>\n",
       "      <th>peer_ip</th>\n",
       "      <th>name</th>\n",
       "      <th>node_name</th>\n",
       "      <th>servicename</th>\n",
       "      <th>code</th>\n",
       "      <th>message</th>\n",
       "      <th>severity</th>\n",
       "      <th>codes</th>\n",
       "      <th>peer_service</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>bab5c02a2180c1ae11ad48aa4865a6be</td>\n",
       "      <td>8b117bb756449a54</td>\n",
       "      <td>1.0</td>\n",
       "      <td>hipstershop.ProductCatalogService/GetProduct</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': 'cd06f86d09...</td>\n",
       "      <td>1749175230097553</td>\n",
       "      <td>1749175230097</td>\n",
       "      <td>12633</td>\n",
       "      <td>[{'key': 'rpc.system', 'type': 'string', 'valu...</td>\n",
       "      <td>[{'fields': [{'key': 'message.type', 'type': '...</td>\n",
       "      <td>...</td>\n",
       "      <td>GetProduct</td>\n",
       "      <td>10.233.81.15</td>\n",
       "      <td>productcatalogservice-2</td>\n",
       "      <td>aiops-k8s-05</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>productcatalogservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>bab5c02a2180c1ae11ad48aa4865a6be</td>\n",
       "      <td>0190233846e66fb7</td>\n",
       "      <td>1.0</td>\n",
       "      <td>hipstershop.ProductCatalogService/GetProduct</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': '45b5e1de78...</td>\n",
       "      <td>1749175230086385</td>\n",
       "      <td>1749175230086</td>\n",
       "      <td>10962</td>\n",
       "      <td>[{'key': 'rpc.system', 'type': 'string', 'valu...</td>\n",
       "      <td>[{'fields': [{'key': 'message.type', 'type': '...</td>\n",
       "      <td>...</td>\n",
       "      <td>GetProduct</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>frontend-0</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>frontend</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>productcatalogservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>bab5c02a2180c1ae11ad48aa4865a6be</td>\n",
       "      <td>111b837bfc8e04c6</td>\n",
       "      <td>1.0</td>\n",
       "      <td>hipstershop.ProductCatalogService/GetProduct</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': '45b5e1de78...</td>\n",
       "      <td>1749175230124389</td>\n",
       "      <td>1749175230124</td>\n",
       "      <td>12623</td>\n",
       "      <td>[{'key': 'rpc.system', 'type': 'string', 'valu...</td>\n",
       "      <td>[{'fields': [{'key': 'message.type', 'type': '...</td>\n",
       "      <td>...</td>\n",
       "      <td>GetProduct</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>frontend-0</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>frontend</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>productcatalogservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>a1689598e34a62532f3a79627eeac83d</td>\n",
       "      <td>b5e9f9fc0df11360</td>\n",
       "      <td>1.0</td>\n",
       "      <td>hipstershop.ProductCatalogService/GetProduct</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': 'eb91663a04...</td>\n",
       "      <td>1749175230532827</td>\n",
       "      <td>1749175230532</td>\n",
       "      <td>8757</td>\n",
       "      <td>[{'key': 'rpc.system', 'type': 'string', 'valu...</td>\n",
       "      <td>[{'fields': [{'key': 'message.type', 'type': '...</td>\n",
       "      <td>...</td>\n",
       "      <td>GetProduct</td>\n",
       "      <td>10.233.77.230</td>\n",
       "      <td>productcatalogservice-1</td>\n",
       "      <td>aiops-k8s-06</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>productcatalogservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>a1689598e34a62532f3a79627eeac83d</td>\n",
       "      <td>067e6815f6f148bb</td>\n",
       "      <td>1.0</td>\n",
       "      <td>hipstershop.CurrencyService/GetSupportedCurren...</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': '18ffac58a7...</td>\n",
       "      <td>1749175230512510</td>\n",
       "      <td>1749175230512</td>\n",
       "      <td>4055</td>\n",
       "      <td>[{'key': 'rpc.system', 'type': 'string', 'valu...</td>\n",
       "      <td>[{'fields': [{'key': 'message.type', 'type': '...</td>\n",
       "      <td>...</td>\n",
       "      <td>GetSupportedCurrencies</td>\n",
       "      <td>currencyservice</td>\n",
       "      <td>frontend-2</td>\n",
       "      <td>aiops-k8s-04</td>\n",
       "      <td>frontend</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>currencyservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>378982</th>\n",
       "      <td>a57956b9d88f63a110ac36d7eb643242</td>\n",
       "      <td>9636be9c4a0a2e1a</td>\n",
       "      <td>NaN</td>\n",
       "      <td>HGET</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': '8f82300c1a...</td>\n",
       "      <td>1749178798129824</td>\n",
       "      <td>1749178798129</td>\n",
       "      <td>1470</td>\n",
       "      <td>[{'key': 'otel.library.name', 'type': 'string'...</td>\n",
       "      <td>[{'fields': [{'key': 'event', 'type': 'string'...</td>\n",
       "      <td>...</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>redis</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>hget</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>378983</th>\n",
       "      <td>2462bf745df39573baa47e7766696952</td>\n",
       "      <td>cb67f1c72d317e5a</td>\n",
       "      <td>NaN</td>\n",
       "      <td>HGET</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': '3e7f669ca2...</td>\n",
       "      <td>1749178796439755</td>\n",
       "      <td>1749178796439</td>\n",
       "      <td>1271</td>\n",
       "      <td>[{'key': 'otel.library.name', 'type': 'string'...</td>\n",
       "      <td>[{'fields': [{'key': 'event', 'type': 'string'...</td>\n",
       "      <td>...</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>redis</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>hget</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>378984</th>\n",
       "      <td>ff9b086120c6e9489813fed9bcdff7cd</td>\n",
       "      <td>dd77a00d5c1462ca</td>\n",
       "      <td>NaN</td>\n",
       "      <td>HMSET</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': '2a7b466a96...</td>\n",
       "      <td>1749178794842780</td>\n",
       "      <td>1749178794842</td>\n",
       "      <td>1825</td>\n",
       "      <td>[{'key': 'otel.library.name', 'type': 'string'...</td>\n",
       "      <td>[{'fields': [{'key': 'event', 'type': 'string'...</td>\n",
       "      <td>...</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>redis</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>hmset</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>378985</th>\n",
       "      <td>6ac27013aed357cb51fb770bce8d5cc0</td>\n",
       "      <td>aee616ab27e0cbe1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>/hipstershop.ProductCatalogService/ListProducts</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': '8f220b6b5c...</td>\n",
       "      <td>1749178798977814</td>\n",
       "      <td>1749178798977</td>\n",
       "      <td>4295</td>\n",
       "      <td>[{'key': 'status.code', 'type': 'int64', 'valu...</td>\n",
       "      <td>[]</td>\n",
       "      <td>...</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>recommendationservice-0</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>recommendationservice</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>378986</th>\n",
       "      <td>6d40b56ed7a4a990246324c54cbdf378</td>\n",
       "      <td>8ab52c0db3f78be8</td>\n",
       "      <td>NaN</td>\n",
       "      <td>POST /hipstershop.CartService/EmptyCart</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': '281fa9ee2d...</td>\n",
       "      <td>1749178798982518</td>\n",
       "      <td>1749178798982</td>\n",
       "      <td>2396</td>\n",
       "      <td>[{'key': 'otel.library.name', 'type': 'string'...</td>\n",
       "      <td>[]</td>\n",
       "      <td>...</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>cartservice</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>post</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>378987 rows × 22 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                 traceID            spanID  flags  \\\n",
       "0       bab5c02a2180c1ae11ad48aa4865a6be  8b117bb756449a54    1.0   \n",
       "1       bab5c02a2180c1ae11ad48aa4865a6be  0190233846e66fb7    1.0   \n",
       "2       bab5c02a2180c1ae11ad48aa4865a6be  111b837bfc8e04c6    1.0   \n",
       "3       a1689598e34a62532f3a79627eeac83d  b5e9f9fc0df11360    1.0   \n",
       "4       a1689598e34a62532f3a79627eeac83d  067e6815f6f148bb    1.0   \n",
       "...                                  ...               ...    ...   \n",
       "378982  a57956b9d88f63a110ac36d7eb643242  9636be9c4a0a2e1a    NaN   \n",
       "378983  2462bf745df39573baa47e7766696952  cb67f1c72d317e5a    NaN   \n",
       "378984  ff9b086120c6e9489813fed9bcdff7cd  dd77a00d5c1462ca    NaN   \n",
       "378985  6ac27013aed357cb51fb770bce8d5cc0  aee616ab27e0cbe1    1.0   \n",
       "378986  6d40b56ed7a4a990246324c54cbdf378  8ab52c0db3f78be8    NaN   \n",
       "\n",
       "                                            operationName  \\\n",
       "0            hipstershop.ProductCatalogService/GetProduct   \n",
       "1            hipstershop.ProductCatalogService/GetProduct   \n",
       "2            hipstershop.ProductCatalogService/GetProduct   \n",
       "3            hipstershop.ProductCatalogService/GetProduct   \n",
       "4       hipstershop.CurrencyService/GetSupportedCurren...   \n",
       "...                                                   ...   \n",
       "378982                                               HGET   \n",
       "378983                                               HGET   \n",
       "378984                                              HMSET   \n",
       "378985    /hipstershop.ProductCatalogService/ListProducts   \n",
       "378986            POST /hipstershop.CartService/EmptyCart   \n",
       "\n",
       "                                               references         startTime  \\\n",
       "0       [{'refType': 'CHILD_OF', 'spanID': 'cd06f86d09...  1749175230097553   \n",
       "1       [{'refType': 'CHILD_OF', 'spanID': '45b5e1de78...  1749175230086385   \n",
       "2       [{'refType': 'CHILD_OF', 'spanID': '45b5e1de78...  1749175230124389   \n",
       "3       [{'refType': 'CHILD_OF', 'spanID': 'eb91663a04...  1749175230532827   \n",
       "4       [{'refType': 'CHILD_OF', 'spanID': '18ffac58a7...  1749175230512510   \n",
       "...                                                   ...               ...   \n",
       "378982  [{'refType': 'CHILD_OF', 'spanID': '8f82300c1a...  1749178798129824   \n",
       "378983  [{'refType': 'CHILD_OF', 'spanID': '3e7f669ca2...  1749178796439755   \n",
       "378984  [{'refType': 'CHILD_OF', 'spanID': '2a7b466a96...  1749178794842780   \n",
       "378985  [{'refType': 'CHILD_OF', 'spanID': '8f220b6b5c...  1749178798977814   \n",
       "378986  [{'refType': 'CHILD_OF', 'spanID': '281fa9ee2d...  1749178798982518   \n",
       "\n",
       "        startTimeMillis  duration  \\\n",
       "0         1749175230097     12633   \n",
       "1         1749175230086     10962   \n",
       "2         1749175230124     12623   \n",
       "3         1749175230532      8757   \n",
       "4         1749175230512      4055   \n",
       "...                 ...       ...   \n",
       "378982    1749178798129      1470   \n",
       "378983    1749178796439      1271   \n",
       "378984    1749178794842      1825   \n",
       "378985    1749178798977      4295   \n",
       "378986    1749178798982      2396   \n",
       "\n",
       "                                                     tags  \\\n",
       "0       [{'key': 'rpc.system', 'type': 'string', 'valu...   \n",
       "1       [{'key': 'rpc.system', 'type': 'string', 'valu...   \n",
       "2       [{'key': 'rpc.system', 'type': 'string', 'valu...   \n",
       "3       [{'key': 'rpc.system', 'type': 'string', 'valu...   \n",
       "4       [{'key': 'rpc.system', 'type': 'string', 'valu...   \n",
       "...                                                   ...   \n",
       "378982  [{'key': 'otel.library.name', 'type': 'string'...   \n",
       "378983  [{'key': 'otel.library.name', 'type': 'string'...   \n",
       "378984  [{'key': 'otel.library.name', 'type': 'string'...   \n",
       "378985  [{'key': 'status.code', 'type': 'int64', 'valu...   \n",
       "378986  [{'key': 'otel.library.name', 'type': 'string'...   \n",
       "\n",
       "                                                     logs  ...  \\\n",
       "0       [{'fields': [{'key': 'message.type', 'type': '...  ...   \n",
       "1       [{'fields': [{'key': 'message.type', 'type': '...  ...   \n",
       "2       [{'fields': [{'key': 'message.type', 'type': '...  ...   \n",
       "3       [{'fields': [{'key': 'message.type', 'type': '...  ...   \n",
       "4       [{'fields': [{'key': 'message.type', 'type': '...  ...   \n",
       "...                                                   ...  ...   \n",
       "378982  [{'fields': [{'key': 'event', 'type': 'string'...  ...   \n",
       "378983  [{'fields': [{'key': 'event', 'type': 'string'...  ...   \n",
       "378984  [{'fields': [{'key': 'event', 'type': 'string'...  ...   \n",
       "378985                                                 []  ...   \n",
       "378986                                                 []  ...   \n",
       "\n",
       "                   peer_method                peer_ip  \\\n",
       "0                   GetProduct           10.233.81.15   \n",
       "1                   GetProduct  productcatalogservice   \n",
       "2                   GetProduct  productcatalogservice   \n",
       "3                   GetProduct          10.233.77.230   \n",
       "4       GetSupportedCurrencies        currencyservice   \n",
       "...                        ...                    ...   \n",
       "378982                    None                   None   \n",
       "378983                    None                   None   \n",
       "378984                    None                   None   \n",
       "378985                    None                   None   \n",
       "378986                    None                   None   \n",
       "\n",
       "                           name     node_name            servicename  code  \\\n",
       "0       productcatalogservice-2  aiops-k8s-05  productcatalogservice     0   \n",
       "1                    frontend-0  aiops-k8s-03               frontend     0   \n",
       "2                    frontend-0  aiops-k8s-03               frontend     0   \n",
       "3       productcatalogservice-1  aiops-k8s-06  productcatalogservice     0   \n",
       "4                    frontend-2  aiops-k8s-04               frontend     0   \n",
       "...                         ...           ...                    ...   ...   \n",
       "378982                     None          None                  redis  None   \n",
       "378983                     None          None                  redis  None   \n",
       "378984                     None          None                  redis  None   \n",
       "378985  recommendationservice-0  aiops-k8s-03  recommendationservice     0   \n",
       "378986                     None          None            cartservice  None   \n",
       "\n",
       "       message severity codes           peer_service  \n",
       "0                  info     0  productcatalogservice  \n",
       "1                  info     0  productcatalogservice  \n",
       "2                  info     0  productcatalogservice  \n",
       "3                  info     0  productcatalogservice  \n",
       "4                  info     0        currencyservice  \n",
       "...        ...      ...   ...                    ...  \n",
       "378982    None     info     0                   hget  \n",
       "378983    None     info     0                   hget  \n",
       "378984    None     info     0                  hmset  \n",
       "378985             info     0                         \n",
       "378986    None     info     0                  post   \n",
       "\n",
       "[378987 rows x 22 columns]"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tl.data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "d9a4b95b-74c9-4ad0-9851-189b3dcd14bb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "defaultdict(list,\n",
       "            {'trace id : d0f3d': [[' trace id: b8330 : from frontend to productcatalogservice'],\n",
       "              [' trace id: 27b97 : from frontend to cartservice']],\n",
       "             'trace id : b8330': [[' trace id: 0f6f9 : from productcatalogservice to productcatalogservice']],\n",
       "             'trace id : 27b97': [[' trace id: 2a7b4 : from cartservice to post ']],\n",
       "             'trace id : 2a7b4': [[' trace id: dcbef : from redis to hget'],\n",
       "              [' trace id: dd77a : from redis to hmset']]})"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from typing import DefaultDict\n",
    "class_trace = tl.data[tl.data['traceID']=='ff9b086120c6e9489813fed9bcdff7cd'].sort_values(by='startTime')\n",
    "class_trace['father'] =  class_trace.references.apply(lambda x: x[0]['spanID'] if len(x)>0 else -1)\n",
    "\n",
    "tofilterfather = 'b83303072086064e'\n",
    "tofilter_trace = class_trace[class_trace['father']==tofilterfather].traceID.drop_duplicates().values[0]\n",
    "\n",
    "calltrace = DefaultDict(list)\n",
    "for itrace,ifather,fs,ts in class_trace[['spanID','father','servicename','peer_service']].values:\n",
    "    if ifather == -1 : continue\n",
    "    calltrace['trace id : '+ifather[0:5]].append([f' trace id: {itrace[0:5]} : from {fs} to {ts}'])\n",
    "    \n",
    "calltrace   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "54d6f42c-a85c-41a9-97dc-7d4af0e9ce67",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>traceID</th>\n",
       "      <th>spanID</th>\n",
       "      <th>flags</th>\n",
       "      <th>operationName</th>\n",
       "      <th>references</th>\n",
       "      <th>startTime</th>\n",
       "      <th>startTimeMillis</th>\n",
       "      <th>duration</th>\n",
       "      <th>tags</th>\n",
       "      <th>logs</th>\n",
       "      <th>...</th>\n",
       "      <th>peer_ip</th>\n",
       "      <th>name</th>\n",
       "      <th>node_name</th>\n",
       "      <th>servicename</th>\n",
       "      <th>code</th>\n",
       "      <th>message</th>\n",
       "      <th>severity</th>\n",
       "      <th>codes</th>\n",
       "      <th>peer_service</th>\n",
       "      <th>father</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>375896</th>\n",
       "      <td>ff9b086120c6e9489813fed9bcdff7cd</td>\n",
       "      <td>d0f3de6f57a5db33</td>\n",
       "      <td>1.0</td>\n",
       "      <td>hipstershop.Frontend/Recv.</td>\n",
       "      <td>[]</td>\n",
       "      <td>1749178794827290</td>\n",
       "      <td>1749178794827</td>\n",
       "      <td>18598</td>\n",
       "      <td>[{'key': 'net.transport', 'type': 'string', 'v...</td>\n",
       "      <td>[]</td>\n",
       "      <td>...</td>\n",
       "      <td>10.233.74.19</td>\n",
       "      <td>frontend-1</td>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>frontend</td>\n",
       "      <td>0</td>\n",
       "      <td>HTTP status code</td>\n",
       "      <td>info</td>\n",
       "      <td>302</td>\n",
       "      <td>frontend</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>378843</th>\n",
       "      <td>ff9b086120c6e9489813fed9bcdff7cd</td>\n",
       "      <td>b83303072086064e</td>\n",
       "      <td>1.0</td>\n",
       "      <td>hipstershop.ProductCatalogService/GetProduct</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': 'd0f3de6f57...</td>\n",
       "      <td>1749178794827649</td>\n",
       "      <td>1749178794827</td>\n",
       "      <td>12140</td>\n",
       "      <td>[{'key': 'rpc.system', 'type': 'string', 'valu...</td>\n",
       "      <td>[{'fields': [{'key': 'message.type', 'type': '...</td>\n",
       "      <td>...</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>frontend-1</td>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>frontend</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>d0f3de6f57a5db33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>377343</th>\n",
       "      <td>ff9b086120c6e9489813fed9bcdff7cd</td>\n",
       "      <td>0f6f9362c9e9ad53</td>\n",
       "      <td>1.0</td>\n",
       "      <td>hipstershop.ProductCatalogService/GetProduct</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': 'b833030720...</td>\n",
       "      <td>1749178794828716</td>\n",
       "      <td>1749178794828</td>\n",
       "      <td>10641</td>\n",
       "      <td>[{'key': 'rpc.system', 'type': 'string', 'valu...</td>\n",
       "      <td>[{'fields': [{'key': 'message.type', 'type': '...</td>\n",
       "      <td>...</td>\n",
       "      <td>10.233.85.112</td>\n",
       "      <td>productcatalogservice-2</td>\n",
       "      <td>aiops-k8s-05</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>b83303072086064e</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>375897</th>\n",
       "      <td>ff9b086120c6e9489813fed9bcdff7cd</td>\n",
       "      <td>27b97f7d2b1bbe4d</td>\n",
       "      <td>1.0</td>\n",
       "      <td>hipstershop.CartService/AddItem</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': 'd0f3de6f57...</td>\n",
       "      <td>1749178794839845</td>\n",
       "      <td>1749178794839</td>\n",
       "      <td>5821</td>\n",
       "      <td>[{'key': 'rpc.system', 'type': 'string', 'valu...</td>\n",
       "      <td>[{'fields': [{'key': 'message.type', 'type': '...</td>\n",
       "      <td>...</td>\n",
       "      <td>cartservice</td>\n",
       "      <td>frontend-1</td>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>frontend</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>cartservice</td>\n",
       "      <td>d0f3de6f57a5db33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>377432</th>\n",
       "      <td>ff9b086120c6e9489813fed9bcdff7cd</td>\n",
       "      <td>2a7b466a96c9a561</td>\n",
       "      <td>NaN</td>\n",
       "      <td>POST /hipstershop.CartService/AddItem</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': '27b97f7d2b...</td>\n",
       "      <td>1749178794840516</td>\n",
       "      <td>1749178794840</td>\n",
       "      <td>4692</td>\n",
       "      <td>[{'key': 'otel.library.name', 'type': 'string'...</td>\n",
       "      <td>[]</td>\n",
       "      <td>...</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>cartservice</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>post</td>\n",
       "      <td>27b97f7d2b1bbe4d</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>376030</th>\n",
       "      <td>ff9b086120c6e9489813fed9bcdff7cd</td>\n",
       "      <td>dcbefc1eb60420ca</td>\n",
       "      <td>NaN</td>\n",
       "      <td>HGET</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': '2a7b466a96...</td>\n",
       "      <td>1749178794841329</td>\n",
       "      <td>1749178794841</td>\n",
       "      <td>1383</td>\n",
       "      <td>[{'key': 'otel.library.name', 'type': 'string'...</td>\n",
       "      <td>[{'fields': [{'key': 'event', 'type': 'string'...</td>\n",
       "      <td>...</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>redis</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>hget</td>\n",
       "      <td>2a7b466a96c9a561</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>378984</th>\n",
       "      <td>ff9b086120c6e9489813fed9bcdff7cd</td>\n",
       "      <td>dd77a00d5c1462ca</td>\n",
       "      <td>NaN</td>\n",
       "      <td>HMSET</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': '2a7b466a96...</td>\n",
       "      <td>1749178794842780</td>\n",
       "      <td>1749178794842</td>\n",
       "      <td>1825</td>\n",
       "      <td>[{'key': 'otel.library.name', 'type': 'string'...</td>\n",
       "      <td>[{'fields': [{'key': 'event', 'type': 'string'...</td>\n",
       "      <td>...</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>redis</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>hmset</td>\n",
       "      <td>2a7b466a96c9a561</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>7 rows × 23 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                 traceID            spanID  flags  \\\n",
       "375896  ff9b086120c6e9489813fed9bcdff7cd  d0f3de6f57a5db33    1.0   \n",
       "378843  ff9b086120c6e9489813fed9bcdff7cd  b83303072086064e    1.0   \n",
       "377343  ff9b086120c6e9489813fed9bcdff7cd  0f6f9362c9e9ad53    1.0   \n",
       "375897  ff9b086120c6e9489813fed9bcdff7cd  27b97f7d2b1bbe4d    1.0   \n",
       "377432  ff9b086120c6e9489813fed9bcdff7cd  2a7b466a96c9a561    NaN   \n",
       "376030  ff9b086120c6e9489813fed9bcdff7cd  dcbefc1eb60420ca    NaN   \n",
       "378984  ff9b086120c6e9489813fed9bcdff7cd  dd77a00d5c1462ca    NaN   \n",
       "\n",
       "                                       operationName  \\\n",
       "375896                    hipstershop.Frontend/Recv.   \n",
       "378843  hipstershop.ProductCatalogService/GetProduct   \n",
       "377343  hipstershop.ProductCatalogService/GetProduct   \n",
       "375897               hipstershop.CartService/AddItem   \n",
       "377432         POST /hipstershop.CartService/AddItem   \n",
       "376030                                          HGET   \n",
       "378984                                         HMSET   \n",
       "\n",
       "                                               references         startTime  \\\n",
       "375896                                                 []  1749178794827290   \n",
       "378843  [{'refType': 'CHILD_OF', 'spanID': 'd0f3de6f57...  1749178794827649   \n",
       "377343  [{'refType': 'CHILD_OF', 'spanID': 'b833030720...  1749178794828716   \n",
       "375897  [{'refType': 'CHILD_OF', 'spanID': 'd0f3de6f57...  1749178794839845   \n",
       "377432  [{'refType': 'CHILD_OF', 'spanID': '27b97f7d2b...  1749178794840516   \n",
       "376030  [{'refType': 'CHILD_OF', 'spanID': '2a7b466a96...  1749178794841329   \n",
       "378984  [{'refType': 'CHILD_OF', 'spanID': '2a7b466a96...  1749178794842780   \n",
       "\n",
       "        startTimeMillis  duration  \\\n",
       "375896    1749178794827     18598   \n",
       "378843    1749178794827     12140   \n",
       "377343    1749178794828     10641   \n",
       "375897    1749178794839      5821   \n",
       "377432    1749178794840      4692   \n",
       "376030    1749178794841      1383   \n",
       "378984    1749178794842      1825   \n",
       "\n",
       "                                                     tags  \\\n",
       "375896  [{'key': 'net.transport', 'type': 'string', 'v...   \n",
       "378843  [{'key': 'rpc.system', 'type': 'string', 'valu...   \n",
       "377343  [{'key': 'rpc.system', 'type': 'string', 'valu...   \n",
       "375897  [{'key': 'rpc.system', 'type': 'string', 'valu...   \n",
       "377432  [{'key': 'otel.library.name', 'type': 'string'...   \n",
       "376030  [{'key': 'otel.library.name', 'type': 'string'...   \n",
       "378984  [{'key': 'otel.library.name', 'type': 'string'...   \n",
       "\n",
       "                                                     logs  ...  \\\n",
       "375896                                                 []  ...   \n",
       "378843  [{'fields': [{'key': 'message.type', 'type': '...  ...   \n",
       "377343  [{'fields': [{'key': 'message.type', 'type': '...  ...   \n",
       "375897  [{'fields': [{'key': 'message.type', 'type': '...  ...   \n",
       "377432                                                 []  ...   \n",
       "376030  [{'fields': [{'key': 'event', 'type': 'string'...  ...   \n",
       "378984  [{'fields': [{'key': 'event', 'type': 'string'...  ...   \n",
       "\n",
       "                      peer_ip                     name     node_name  \\\n",
       "375896           10.233.74.19               frontend-1  aiops-k8s-07   \n",
       "378843  productcatalogservice               frontend-1  aiops-k8s-07   \n",
       "377343          10.233.85.112  productcatalogservice-2  aiops-k8s-05   \n",
       "375897            cartservice               frontend-1  aiops-k8s-07   \n",
       "377432                   None                     None          None   \n",
       "376030                   None                     None          None   \n",
       "378984                   None                     None          None   \n",
       "\n",
       "                  servicename  code           message severity codes  \\\n",
       "375896               frontend     0  HTTP status code     info   302   \n",
       "378843               frontend     0                       info     0   \n",
       "377343  productcatalogservice     0                       info     0   \n",
       "375897               frontend     0                       info     0   \n",
       "377432            cartservice  None              None     info     0   \n",
       "376030                  redis  None              None     info     0   \n",
       "378984                  redis  None              None     info     0   \n",
       "\n",
       "                 peer_service            father  \n",
       "375896               frontend                -1  \n",
       "378843  productcatalogservice  d0f3de6f57a5db33  \n",
       "377343  productcatalogservice  b83303072086064e  \n",
       "375897            cartservice  d0f3de6f57a5db33  \n",
       "377432                  post   27b97f7d2b1bbe4d  \n",
       "376030                   hget  2a7b466a96c9a561  \n",
       "378984                  hmset  2a7b466a96c9a561  \n",
       "\n",
       "[7 rows x 23 columns]"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "class_trace[class_trace['traceID'] == tofilter_trace ]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "e45aa32c-9e1c-4607-80a1-7e44fd333080",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>traceID</th>\n",
       "      <th>spanID</th>\n",
       "      <th>flags</th>\n",
       "      <th>operationName</th>\n",
       "      <th>references</th>\n",
       "      <th>startTime</th>\n",
       "      <th>startTimeMillis</th>\n",
       "      <th>duration</th>\n",
       "      <th>tags</th>\n",
       "      <th>logs</th>\n",
       "      <th>...</th>\n",
       "      <th>peer_ip</th>\n",
       "      <th>name</th>\n",
       "      <th>node_name</th>\n",
       "      <th>servicename</th>\n",
       "      <th>code</th>\n",
       "      <th>message</th>\n",
       "      <th>severity</th>\n",
       "      <th>codes</th>\n",
       "      <th>peer_service</th>\n",
       "      <th>father</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>375896</th>\n",
       "      <td>ff9b086120c6e9489813fed9bcdff7cd</td>\n",
       "      <td>d0f3de6f57a5db33</td>\n",
       "      <td>1.0</td>\n",
       "      <td>hipstershop.Frontend/Recv.</td>\n",
       "      <td>[]</td>\n",
       "      <td>1749178794827290</td>\n",
       "      <td>1749178794827</td>\n",
       "      <td>18598</td>\n",
       "      <td>[{'key': 'net.transport', 'type': 'string', 'v...</td>\n",
       "      <td>[]</td>\n",
       "      <td>...</td>\n",
       "      <td>10.233.74.19</td>\n",
       "      <td>frontend-1</td>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>frontend</td>\n",
       "      <td>0</td>\n",
       "      <td>HTTP status code</td>\n",
       "      <td>info</td>\n",
       "      <td>302</td>\n",
       "      <td>frontend</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>378843</th>\n",
       "      <td>ff9b086120c6e9489813fed9bcdff7cd</td>\n",
       "      <td>b83303072086064e</td>\n",
       "      <td>1.0</td>\n",
       "      <td>hipstershop.ProductCatalogService/GetProduct</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': 'd0f3de6f57...</td>\n",
       "      <td>1749178794827649</td>\n",
       "      <td>1749178794827</td>\n",
       "      <td>12140</td>\n",
       "      <td>[{'key': 'rpc.system', 'type': 'string', 'valu...</td>\n",
       "      <td>[{'fields': [{'key': 'message.type', 'type': '...</td>\n",
       "      <td>...</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>frontend-1</td>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>frontend</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>d0f3de6f57a5db33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>377343</th>\n",
       "      <td>ff9b086120c6e9489813fed9bcdff7cd</td>\n",
       "      <td>0f6f9362c9e9ad53</td>\n",
       "      <td>1.0</td>\n",
       "      <td>hipstershop.ProductCatalogService/GetProduct</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': 'b833030720...</td>\n",
       "      <td>1749178794828716</td>\n",
       "      <td>1749178794828</td>\n",
       "      <td>10641</td>\n",
       "      <td>[{'key': 'rpc.system', 'type': 'string', 'valu...</td>\n",
       "      <td>[{'fields': [{'key': 'message.type', 'type': '...</td>\n",
       "      <td>...</td>\n",
       "      <td>10.233.85.112</td>\n",
       "      <td>productcatalogservice-2</td>\n",
       "      <td>aiops-k8s-05</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>b83303072086064e</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>375897</th>\n",
       "      <td>ff9b086120c6e9489813fed9bcdff7cd</td>\n",
       "      <td>27b97f7d2b1bbe4d</td>\n",
       "      <td>1.0</td>\n",
       "      <td>hipstershop.CartService/AddItem</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': 'd0f3de6f57...</td>\n",
       "      <td>1749178794839845</td>\n",
       "      <td>1749178794839</td>\n",
       "      <td>5821</td>\n",
       "      <td>[{'key': 'rpc.system', 'type': 'string', 'valu...</td>\n",
       "      <td>[{'fields': [{'key': 'message.type', 'type': '...</td>\n",
       "      <td>...</td>\n",
       "      <td>cartservice</td>\n",
       "      <td>frontend-1</td>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>frontend</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>cartservice</td>\n",
       "      <td>d0f3de6f57a5db33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>377432</th>\n",
       "      <td>ff9b086120c6e9489813fed9bcdff7cd</td>\n",
       "      <td>2a7b466a96c9a561</td>\n",
       "      <td>NaN</td>\n",
       "      <td>POST /hipstershop.CartService/AddItem</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': '27b97f7d2b...</td>\n",
       "      <td>1749178794840516</td>\n",
       "      <td>1749178794840</td>\n",
       "      <td>4692</td>\n",
       "      <td>[{'key': 'otel.library.name', 'type': 'string'...</td>\n",
       "      <td>[]</td>\n",
       "      <td>...</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>cartservice</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>post</td>\n",
       "      <td>27b97f7d2b1bbe4d</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>376030</th>\n",
       "      <td>ff9b086120c6e9489813fed9bcdff7cd</td>\n",
       "      <td>dcbefc1eb60420ca</td>\n",
       "      <td>NaN</td>\n",
       "      <td>HGET</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': '2a7b466a96...</td>\n",
       "      <td>1749178794841329</td>\n",
       "      <td>1749178794841</td>\n",
       "      <td>1383</td>\n",
       "      <td>[{'key': 'otel.library.name', 'type': 'string'...</td>\n",
       "      <td>[{'fields': [{'key': 'event', 'type': 'string'...</td>\n",
       "      <td>...</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>redis</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>hget</td>\n",
       "      <td>2a7b466a96c9a561</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>378984</th>\n",
       "      <td>ff9b086120c6e9489813fed9bcdff7cd</td>\n",
       "      <td>dd77a00d5c1462ca</td>\n",
       "      <td>NaN</td>\n",
       "      <td>HMSET</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': '2a7b466a96...</td>\n",
       "      <td>1749178794842780</td>\n",
       "      <td>1749178794842</td>\n",
       "      <td>1825</td>\n",
       "      <td>[{'key': 'otel.library.name', 'type': 'string'...</td>\n",
       "      <td>[{'fields': [{'key': 'event', 'type': 'string'...</td>\n",
       "      <td>...</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>redis</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>info</td>\n",
       "      <td>0</td>\n",
       "      <td>hmset</td>\n",
       "      <td>2a7b466a96c9a561</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>7 rows × 23 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                 traceID            spanID  flags  \\\n",
       "375896  ff9b086120c6e9489813fed9bcdff7cd  d0f3de6f57a5db33    1.0   \n",
       "378843  ff9b086120c6e9489813fed9bcdff7cd  b83303072086064e    1.0   \n",
       "377343  ff9b086120c6e9489813fed9bcdff7cd  0f6f9362c9e9ad53    1.0   \n",
       "375897  ff9b086120c6e9489813fed9bcdff7cd  27b97f7d2b1bbe4d    1.0   \n",
       "377432  ff9b086120c6e9489813fed9bcdff7cd  2a7b466a96c9a561    NaN   \n",
       "376030  ff9b086120c6e9489813fed9bcdff7cd  dcbefc1eb60420ca    NaN   \n",
       "378984  ff9b086120c6e9489813fed9bcdff7cd  dd77a00d5c1462ca    NaN   \n",
       "\n",
       "                                       operationName  \\\n",
       "375896                    hipstershop.Frontend/Recv.   \n",
       "378843  hipstershop.ProductCatalogService/GetProduct   \n",
       "377343  hipstershop.ProductCatalogService/GetProduct   \n",
       "375897               hipstershop.CartService/AddItem   \n",
       "377432         POST /hipstershop.CartService/AddItem   \n",
       "376030                                          HGET   \n",
       "378984                                         HMSET   \n",
       "\n",
       "                                               references         startTime  \\\n",
       "375896                                                 []  1749178794827290   \n",
       "378843  [{'refType': 'CHILD_OF', 'spanID': 'd0f3de6f57...  1749178794827649   \n",
       "377343  [{'refType': 'CHILD_OF', 'spanID': 'b833030720...  1749178794828716   \n",
       "375897  [{'refType': 'CHILD_OF', 'spanID': 'd0f3de6f57...  1749178794839845   \n",
       "377432  [{'refType': 'CHILD_OF', 'spanID': '27b97f7d2b...  1749178794840516   \n",
       "376030  [{'refType': 'CHILD_OF', 'spanID': '2a7b466a96...  1749178794841329   \n",
       "378984  [{'refType': 'CHILD_OF', 'spanID': '2a7b466a96...  1749178794842780   \n",
       "\n",
       "        startTimeMillis  duration  \\\n",
       "375896    1749178794827     18598   \n",
       "378843    1749178794827     12140   \n",
       "377343    1749178794828     10641   \n",
       "375897    1749178794839      5821   \n",
       "377432    1749178794840      4692   \n",
       "376030    1749178794841      1383   \n",
       "378984    1749178794842      1825   \n",
       "\n",
       "                                                     tags  \\\n",
       "375896  [{'key': 'net.transport', 'type': 'string', 'v...   \n",
       "378843  [{'key': 'rpc.system', 'type': 'string', 'valu...   \n",
       "377343  [{'key': 'rpc.system', 'type': 'string', 'valu...   \n",
       "375897  [{'key': 'rpc.system', 'type': 'string', 'valu...   \n",
       "377432  [{'key': 'otel.library.name', 'type': 'string'...   \n",
       "376030  [{'key': 'otel.library.name', 'type': 'string'...   \n",
       "378984  [{'key': 'otel.library.name', 'type': 'string'...   \n",
       "\n",
       "                                                     logs  ...  \\\n",
       "375896                                                 []  ...   \n",
       "378843  [{'fields': [{'key': 'message.type', 'type': '...  ...   \n",
       "377343  [{'fields': [{'key': 'message.type', 'type': '...  ...   \n",
       "375897  [{'fields': [{'key': 'message.type', 'type': '...  ...   \n",
       "377432                                                 []  ...   \n",
       "376030  [{'fields': [{'key': 'event', 'type': 'string'...  ...   \n",
       "378984  [{'fields': [{'key': 'event', 'type': 'string'...  ...   \n",
       "\n",
       "                      peer_ip                     name     node_name  \\\n",
       "375896           10.233.74.19               frontend-1  aiops-k8s-07   \n",
       "378843  productcatalogservice               frontend-1  aiops-k8s-07   \n",
       "377343          10.233.85.112  productcatalogservice-2  aiops-k8s-05   \n",
       "375897            cartservice               frontend-1  aiops-k8s-07   \n",
       "377432                   None                     None          None   \n",
       "376030                   None                     None          None   \n",
       "378984                   None                     None          None   \n",
       "\n",
       "                  servicename  code           message severity codes  \\\n",
       "375896               frontend     0  HTTP status code     info   302   \n",
       "378843               frontend     0                       info     0   \n",
       "377343  productcatalogservice     0                       info     0   \n",
       "375897               frontend     0                       info     0   \n",
       "377432            cartservice  None              None     info     0   \n",
       "376030                  redis  None              None     info     0   \n",
       "378984                  redis  None              None     info     0   \n",
       "\n",
       "                 peer_service            father  \n",
       "375896               frontend                -1  \n",
       "378843  productcatalogservice  d0f3de6f57a5db33  \n",
       "377343  productcatalogservice  b83303072086064e  \n",
       "375897            cartservice  d0f3de6f57a5db33  \n",
       "377432                  post   27b97f7d2b1bbe4d  \n",
       "376030                   hget  2a7b466a96c9a561  \n",
       "378984                  hmset  2a7b466a96c9a561  \n",
       "\n",
       "[7 rows x 23 columns]"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "class_trace"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "5309746e-3114-4055-b330-8d49a8817d33",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['service checkoutservice call cartservice', 'service frontend call cartservice', 'service frontend call recommendationservice', 'service checkoutservice call emailservice', 'service frontend call adservice', 'service recommendationservice call ', 'service frontend call currencyservice']\n",
      "      service cartservice call post   \\\n",
      "mean                     2751.167211   \n",
      "min                       605.000000   \n",
      "25%                      1778.000000   \n",
      "50%                      2088.000000   \n",
      "75%                      2678.000000   \n",
      "max                     94977.000000   \n",
      "\n",
      "      service checkoutservice call checkoutservice  \\\n",
      "mean                                 154055.842593   \n",
      "min                                   62308.000000   \n",
      "25%                                  117034.750000   \n",
      "50%                                  148118.500000   \n",
      "75%                                  184498.250000   \n",
      "max                                  395669.000000   \n",
      "\n",
      "      service checkoutservice call currencyservice  \\\n",
      "mean                                    10239.7008   \n",
      "min                                      3040.0000   \n",
      "25%                                      5593.0000   \n",
      "50%                                      6370.0000   \n",
      "75%                                      7635.0000   \n",
      "max                                     96552.0000   \n",
      "\n",
      "      service checkoutservice call paymentservice  \\\n",
      "mean                                 13096.763889   \n",
      "min                                   3816.000000   \n",
      "25%                                   6279.000000   \n",
      "50%                                   7124.500000   \n",
      "75%                                   8684.250000   \n",
      "max                                  92253.000000   \n",
      "\n",
      "      service checkoutservice call productcatalogservice  \\\n",
      "mean                                       14690.750611    \n",
      "min                                         5765.000000    \n",
      "25%                                        11399.000000    \n",
      "50%                                        13487.000000    \n",
      "75%                                        16290.000000    \n",
      "max                                        96092.000000    \n",
      "\n",
      "      service checkoutservice call shippingservice  \\\n",
      "mean                                  13031.340278   \n",
      "min                                    2795.000000   \n",
      "25%                                    4582.750000   \n",
      "50%                                    5637.000000   \n",
      "75%                                    7541.000000   \n",
      "max                                   86119.000000   \n",
      "\n",
      "      service emailservice call   service frontend call checkoutservice  \\\n",
      "mean                  714.689815                          158277.185185   \n",
      "min                   219.000000                           63904.000000   \n",
      "25%                   595.500000                          121768.750000   \n",
      "50%                   676.500000                          152499.000000   \n",
      "75%                   814.500000                          188147.000000   \n",
      "max                  2370.000000                          398464.000000   \n",
      "\n",
      "      service frontend call frontend  \\\n",
      "mean                    83713.421043   \n",
      "min                       153.000000   \n",
      "25%                     54381.000000   \n",
      "50%                     92433.000000   \n",
      "75%                    103576.500000   \n",
      "max                    451699.000000   \n",
      "\n",
      "      service frontend call productcatalogservice  \\\n",
      "mean                                 11558.613992   \n",
      "min                                    904.000000   \n",
      "25%                                   9920.000000   \n",
      "50%                                  11275.500000   \n",
      "75%                                  12931.250000   \n",
      "max                                  75545.000000   \n",
      "\n",
      "      service frontend call shippingservice  \\\n",
      "mean                            1829.158525   \n",
      "min                              727.000000   \n",
      "25%                             1517.000000   \n",
      "50%                             1753.000000   \n",
      "75%                             2001.000000   \n",
      "max                             8419.000000   \n",
      "\n",
      "      service productcatalogservice call productcatalogservice  \\\n",
      "mean                                        8602.058431          \n",
      "min                                           18.000000          \n",
      "25%                                         7607.000000          \n",
      "50%                                         9318.000000          \n",
      "75%                                        10877.000000          \n",
      "max                                        48878.000000          \n",
      "\n",
      "      service redis call hget  service redis call hmset  \\\n",
      "mean              1844.423593               1504.895865   \n",
      "min                385.000000                484.000000   \n",
      "25%               1139.000000                912.000000   \n",
      "50%               1304.000000               1073.000000   \n",
      "75%               1548.000000               1333.000000   \n",
      "max              94413.000000              80200.000000   \n",
      "\n",
      "      service shippingservice call shippingservice  \n",
      "mean                                    218.216216  \n",
      "min                                      51.000000  \n",
      "25%                                     144.000000  \n",
      "50%                                     171.000000  \n",
      "75%                                     227.000000  \n",
      "max                                    3132.000000  \n",
      "      service cartservice call post   \\\n",
      "mean                     2817.141015   \n",
      "min                       719.000000   \n",
      "25%                      1787.000000   \n",
      "50%                      2085.000000   \n",
      "75%                      2612.000000   \n",
      "max                     86478.000000   \n",
      "\n",
      "      service checkoutservice call checkoutservice  \\\n",
      "mean                                  1.320146e+07   \n",
      "min                                   4.584500e+04   \n",
      "25%                                   1.388082e+05   \n",
      "50%                                   2.024845e+05   \n",
      "75%                                   2.005358e+07   \n",
      "max                                   6.000218e+07   \n",
      "\n",
      "      service checkoutservice call currencyservice  \\\n",
      "mean                                   9550.779242   \n",
      "min                                    2645.000000   \n",
      "25%                                    5704.000000   \n",
      "50%                                    6424.000000   \n",
      "75%                                    7726.000000   \n",
      "max                                   84215.000000   \n",
      "\n",
      "      service checkoutservice call paymentservice  \\\n",
      "mean                                      13150.0   \n",
      "min                                        3601.0   \n",
      "25%                                        5842.0   \n",
      "50%                                        7073.0   \n",
      "75%                                        8494.5   \n",
      "max                                       98126.0   \n",
      "\n",
      "      service checkoutservice call productcatalogservice  \\\n",
      "mean                                       13624.431034    \n",
      "min                                         3949.000000    \n",
      "25%                                        10884.000000    \n",
      "50%                                        13199.500000    \n",
      "75%                                        15581.000000    \n",
      "max                                        55371.000000    \n",
      "\n",
      "      service checkoutservice call shippingservice  \\\n",
      "mean                                  8.293201e+06   \n",
      "min                                   2.305000e+03   \n",
      "25%                                   4.915000e+03   \n",
      "50%                                   6.601000e+03   \n",
      "75%                                   2.000050e+07   \n",
      "max                                   5.997576e+07   \n",
      "\n",
      "      service emailservice call   service frontend call checkoutservice  \\\n",
      "mean                  686.992701                           1.320416e+07   \n",
      "min                   275.000000                           4.790700e+04   \n",
      "25%                   594.000000                           1.424468e+05   \n",
      "50%                   653.000000                           2.052820e+05   \n",
      "75%                   749.000000                           2.005541e+07   \n",
      "max                  1405.000000                           6.000067e+07   \n",
      "\n",
      "      service frontend call frontend  \\\n",
      "mean                    5.956102e+05   \n",
      "min                     1.450000e+02   \n",
      "25%                     5.368400e+04   \n",
      "50%                     9.268900e+04   \n",
      "75%                     1.036180e+05   \n",
      "max                     6.000268e+07   \n",
      "\n",
      "      service frontend call productcatalogservice  \\\n",
      "mean                                 11607.799619   \n",
      "min                                    890.000000   \n",
      "25%                                  10052.000000   \n",
      "50%                                  11380.000000   \n",
      "75%                                  12960.000000   \n",
      "max                                  48524.000000   \n",
      "\n",
      "      service frontend call shippingservice  \\\n",
      "mean                            1902.416667   \n",
      "min                              717.000000   \n",
      "25%                             1544.000000   \n",
      "50%                             1788.000000   \n",
      "75%                             2029.000000   \n",
      "max                            16154.000000   \n",
      "\n",
      "      service productcatalogservice call productcatalogservice  \\\n",
      "mean                                        8658.608196          \n",
      "min                                           17.000000          \n",
      "25%                                         7761.000000          \n",
      "50%                                         9408.000000          \n",
      "75%                                        10925.000000          \n",
      "max                                        38992.000000          \n",
      "\n",
      "      service redis call hget  service redis call hmset  \\\n",
      "mean              1869.750869               1892.744113   \n",
      "min                500.000000                418.000000   \n",
      "25%               1145.000000                902.000000   \n",
      "50%               1295.000000               1041.000000   \n",
      "75%               1525.000000               1286.000000   \n",
      "max              85769.000000              84505.000000   \n",
      "\n",
      "      service shippingservice call shippingservice  \n",
      "mean                                    220.232903  \n",
      "min                                      56.000000  \n",
      "25%                                     146.000000  \n",
      "50%                                     173.000000  \n",
      "75%                                     225.000000  \n",
      "max                                    1930.000000  \n",
      "      service cartservice call post   \\\n",
      "mean                      2549.13229   \n",
      "min                        688.00000   \n",
      "25%                       1766.00000   \n",
      "50%                       2039.00000   \n",
      "75%                       2484.75000   \n",
      "max                      84936.00000   \n",
      "\n",
      "      service checkoutservice call checkoutservice  \\\n",
      "mean                                 156487.131579   \n",
      "min                                   58635.000000   \n",
      "25%                                  121544.500000   \n",
      "50%                                  148597.500000   \n",
      "75%                                  183294.750000   \n",
      "max                                  382834.000000   \n",
      "\n",
      "      service checkoutservice call currencyservice  \\\n",
      "mean                                  10802.741742   \n",
      "min                                    3835.000000   \n",
      "25%                                    5606.000000   \n",
      "50%                                    6495.000000   \n",
      "75%                                    7826.000000   \n",
      "max                                   88590.000000   \n",
      "\n",
      "      service checkoutservice call paymentservice  \\\n",
      "mean                                 15533.149123   \n",
      "min                                   3515.000000   \n",
      "25%                                   5882.000000   \n",
      "50%                                   7280.000000   \n",
      "75%                                   9354.500000   \n",
      "max                                  99164.000000   \n",
      "\n",
      "      service checkoutservice call productcatalogservice  \\\n",
      "mean                                       16096.616438    \n",
      "min                                         6755.000000    \n",
      "25%                                        11200.500000    \n",
      "50%                                        13383.000000    \n",
      "75%                                        16080.500000    \n",
      "max                                       102812.000000    \n",
      "\n",
      "      service checkoutservice call shippingservice  \\\n",
      "mean                                  12651.087719   \n",
      "min                                    2994.000000   \n",
      "25%                                    4687.250000   \n",
      "50%                                    5447.000000   \n",
      "75%                                    7125.250000   \n",
      "max                                   97856.000000   \n",
      "\n",
      "      service emailservice call   service frontend call checkoutservice  \\\n",
      "mean                      703.50                          160905.157895   \n",
      "min                       282.00                           60864.000000   \n",
      "25%                       601.75                          125381.250000   \n",
      "50%                       672.00                          150776.000000   \n",
      "75%                       757.00                          187750.250000   \n",
      "max                      1576.00                          384920.000000   \n",
      "\n",
      "      service frontend call frontend  \\\n",
      "mean                    83126.280887   \n",
      "min                       196.000000   \n",
      "25%                     53470.750000   \n",
      "50%                     92167.500000   \n",
      "75%                    102522.000000   \n",
      "max                    449936.000000   \n",
      "\n",
      "      service frontend call productcatalogservice  \\\n",
      "mean                                 11408.768676   \n",
      "min                                   1128.000000   \n",
      "25%                                   9899.750000   \n",
      "50%                                  11204.500000   \n",
      "75%                                  12769.000000   \n",
      "max                                  44083.000000   \n",
      "\n",
      "      service frontend call shippingservice  \\\n",
      "mean                            1861.497436   \n",
      "min                              797.000000   \n",
      "25%                             1507.000000   \n",
      "50%                             1765.000000   \n",
      "75%                             2035.000000   \n",
      "max                            12079.000000   \n",
      "\n",
      "      service productcatalogservice call productcatalogservice  \\\n",
      "mean                                         8514.77091          \n",
      "min                                            21.00000          \n",
      "25%                                          7624.00000          \n",
      "50%                                          9276.00000          \n",
      "75%                                         10767.00000          \n",
      "max                                         42602.00000          \n",
      "\n",
      "      service redis call hget  service redis call hmset  \\\n",
      "mean              1699.485915               1530.834758   \n",
      "min                524.000000                421.000000   \n",
      "25%               1146.000000                924.500000   \n",
      "50%               1301.000000               1074.000000   \n",
      "75%               1517.000000               1294.000000   \n",
      "max              72662.000000              82795.000000   \n",
      "\n",
      "      service shippingservice call shippingservice  \n",
      "mean                                    223.546125  \n",
      "min                                      58.000000  \n",
      "25%                                     143.000000  \n",
      "50%                                     175.000000  \n",
      "75%                                     226.000000  \n",
      "max                                    2389.000000  \n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'The statistic info of Trace duration  is \\n\\n|                |   service cartservice call post  |   service checkoutservice call checkoutservice |   service checkoutservice call currencyservice |   service checkoutservice call paymentservice |   service checkoutservice call productcatalogservice |   service checkoutservice call shippingservice |   service emailservice call  |   service frontend call checkoutservice |   service frontend call frontend |   service frontend call productcatalogservice |   service frontend call shippingservice |   service productcatalogservice call productcatalogservice |   service redis call hget |   service redis call hmset |   service shippingservice call shippingservice |\\n|:---------------|---------------------------------:|-----------------------------------------------:|-----------------------------------------------:|----------------------------------------------:|-----------------------------------------------------:|-----------------------------------------------:|-----------------------------:|----------------------------------------:|---------------------------------:|----------------------------------------------:|----------------------------------------:|-----------------------------------------------------------:|--------------------------:|---------------------------:|-----------------------------------------------:|\\n| mean(before)   |                          2817.14 |                                    1.32015e+07 |                                        9550.78 |                                      13150    |                                              13624.4 |                                    8.2932e+06  |                      686.993 |                             1.32042e+07 |                 595610           |                                      11607.8  |                                 1902.42 |                                                    8658.61 |                   1869.75 |                    1892.74 |                                        220.233 |\\n| min(before)    |                           719    |                                45845           |                                        2645    |                                       3601    |                                               3949   |                                 2305           |                      275     |                         47907           |                    145           |                                        890    |                                  717    |                                                      17    |                    500    |                     418    |                                         56     |\\n| 25%(before)    |                          1787    |                               138808           |                                        5704    |                                       5842    |                                              10884   |                                 4915           |                      594     |                        142447           |                  53684           |                                      10052    |                                 1544    |                                                    7761    |                   1145    |                     902    |                                        146     |\\n| 50%(before)    |                          2085    |                               202484           |                                        6424    |                                       7073    |                                              13199.5 |                                 6601           |                      653     |                        205282           |                  92689           |                                      11380    |                                 1788    |                                                    9408    |                   1295    |                    1041    |                                        173     |\\n| 75%(before)    |                          2612    |                                    2.00536e+07 |                                        7726    |                                       8494.5  |                                              15581   |                                    2.00005e+07 |                      749     |                             2.00554e+07 |                 103618           |                                      12960    |                                 2029    |                                                   10925    |                   1525    |                    1286    |                                        225     |\\n| max(before)    |                         86478    |                                    6.00022e+07 |                                       84215    |                                      98126    |                                              55371   |                                    5.99758e+07 |                     1405     |                             6.00007e+07 |                      6.00027e+07 |                                      48524    |                                16154    |                                                   38992    |                  85769    |                   84505    |                                       1930     |\\n| mean(abnormal) |                          2751.17 |                               154056           |                                       10239.7  |                                      13096.8  |                                              14690.8 |                                13031.3         |                      714.69  |                        158277           |                  83713.4         |                                      11558.6  |                                 1829.16 |                                                    8602.06 |                   1844.42 |                    1504.9  |                                        218.216 |\\n| min(abnormal)  |                           605    |                                62308           |                                        3040    |                                       3816    |                                               5765   |                                 2795           |                      219     |                         63904           |                    153           |                                        904    |                                  727    |                                                      18    |                    385    |                     484    |                                         51     |\\n| 25%(abnormal)  |                          1778    |                               117035           |                                        5593    |                                       6279    |                                              11399   |                                 4582.75        |                      595.5   |                        121769           |                  54381           |                                       9920    |                                 1517    |                                                    7607    |                   1139    |                     912    |                                        144     |\\n| 50%(abnormal)  |                          2088    |                               148118           |                                        6370    |                                       7124.5  |                                              13487   |                                 5637           |                      676.5   |                        152499           |                  92433           |                                      11275.5  |                                 1753    |                                                    9318    |                   1304    |                    1073    |                                        171     |\\n| 75%(abnormal)  |                          2678    |                               184498           |                                        7635    |                                       8684.25 |                                              16290   |                                 7541           |                      814.5   |                        188147           |                 103576           |                                      12931.2  |                                 2001    |                                                   10877    |                   1548    |                    1333    |                                        227     |\\n| max(abnormal)  |                         94977    |                               395669           |                                       96552    |                                      92253    |                                              96092   |                                86119           |                     2370     |                        398464           |                 451699           |                                      75545    |                                 8419    |                                                   48878    |                  94413    |                   80200    |                                       3132     |\\n| mean(after)    |                          2549.13 |                               156487           |                                       10802.7  |                                      15533.1  |                                              16096.6 |                                12651.1         |                      703.5   |                        160905           |                  83126.3         |                                      11408.8  |                                 1861.5  |                                                    8514.77 |                   1699.49 |                    1530.83 |                                        223.546 |\\n| min(after)     |                           688    |                                58635           |                                        3835    |                                       3515    |                                               6755   |                                 2994           |                      282     |                         60864           |                    196           |                                       1128    |                                  797    |                                                      21    |                    524    |                     421    |                                         58     |\\n| 25%(after)     |                          1766    |                               121544           |                                        5606    |                                       5882    |                                              11200.5 |                                 4687.25        |                      601.75  |                        125381           |                  53470.8         |                                       9899.75 |                                 1507    |                                                    7624    |                   1146    |                     924.5  |                                        143     |\\n| 50%(after)     |                          2039    |                               148598           |                                        6495    |                                       7280    |                                              13383   |                                 5447           |                      672     |                        150776           |                  92167.5         |                                      11204.5  |                                 1765    |                                                    9276    |                   1301    |                    1074    |                                        175     |\\n| 75%(after)     |                          2484.75 |                               183295           |                                        7826    |                                       9354.5  |                                              16080.5 |                                 7125.25        |                      757     |                        187750           |                 102522           |                                      12769    |                                 2035    |                                                   10767    |                   1517    |                    1294    |                                        226     |\\n| max(after)     |                         84936    |                               382834           |                                       88590    |                                      99164    |                                             102812   |                                97856           |                     1576     |                        384920           |                 449936           |                                      44083    |                                12079    |                                                   42602    |                  72662    |                   82795    |                                       2389     |\\n'"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tl.give_duration_statis(1749177000,1749178000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "28966cbf-8073-4959-807c-71f3fc6b9426",
   "metadata": {},
   "outputs": [],
   "source": [
    "tracedata = tl.data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ed3bb7ce-1a90-4050-9bb6-95a5520b9b61",
   "metadata": {},
   "outputs": [],
   "source": [
    "tracedata.timestamp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "90ce9f3f-c9cb-4da5-abb0-49961eba6de8",
   "metadata": {},
   "outputs": [],
   "source": [
    "tracedata.duration.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b7ad1f8f-bd19-4ed1-9f9b-2602a8acb290",
   "metadata": {},
   "outputs": [],
   "source": [
    "statis = tracedata.groupby(['servicename','peer_service']).duration.describe().T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "176d4d76-c687-4c01-b45a-daeda359844d",
   "metadata": {},
   "outputs": [],
   "source": [
    "statis.columns = [ f'service {i[0]} call {i[1]}' for i in statis.columns]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4d5fb453-2512-4cfb-9bf6-7fe1a1cc5c49",
   "metadata": {},
   "outputs": [],
   "source": [
    "statis['service cartservice call post ']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "a39a74e0-1e36-409c-ad4c-cbde0b1362b8",
   "metadata": {},
   "outputs": [],
   "source": [
    "error_traces = tracedata[tracedata['severity'] == 'error' ] if tracedata is not None else []"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "d0dffe9f-2cbb-4977-9167-10a7b91d9a6f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>servicename</th>\n",
       "      <th>peer_service</th>\n",
       "      <th>message</th>\n",
       "      <th>severity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>14355</th>\n",
       "      <td>frontend</td>\n",
       "      <td>checkoutservice</td>\n",
       "      <td>shipping quote failure</td>\n",
       "      <td>error</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15338</th>\n",
       "      <td>checkoutservice</td>\n",
       "      <td>checkoutservice</td>\n",
       "      <td>shipping quote failure</td>\n",
       "      <td>error</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15849</th>\n",
       "      <td>checkoutservice</td>\n",
       "      <td>shippingservice</td>\n",
       "      <td>connection error</td>\n",
       "      <td>error</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18993</th>\n",
       "      <td>frontend</td>\n",
       "      <td>checkoutservice</td>\n",
       "      <td>shipping error</td>\n",
       "      <td>error</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19301</th>\n",
       "      <td>checkoutservice</td>\n",
       "      <td>checkoutservice</td>\n",
       "      <td>shipping error</td>\n",
       "      <td>error</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           servicename     peer_service                 message severity\n",
       "14355         frontend  checkoutservice  shipping quote failure    error\n",
       "15338  checkoutservice  checkoutservice  shipping quote failure    error\n",
       "15849  checkoutservice  shippingservice        connection error    error\n",
       "18993         frontend  checkoutservice          shipping error    error\n",
       "19301  checkoutservice  checkoutservice          shipping error    error"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "error_traces[['servicename','peer_service','message','severity']].drop_duplicates()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "c451e425-af1e-4eb7-a953-f29e5b02431c",
   "metadata": {},
   "outputs": [],
   "source": [
    "data_node = read_node_infra(basepath='/app/jupyter/aiops/phaseone/2025-06-06/metric-parquet/infra/',date='2025-06-06')\n",
    "data_pod = read_pod_infra(basepath='/app/jupyter/aiops/phaseone/2025-06-06/metric-parquet/infra/',date='2025-06-06')\n",
    "topo = pod2nodes(data_pod,data_node)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "63f84435-bdb3-49a0-a29d-b705d6144e77",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>time</th>\n",
       "      <th>client_error</th>\n",
       "      <th>client_error_ratio</th>\n",
       "      <th>error</th>\n",
       "      <th>error_ratio</th>\n",
       "      <th>object_id</th>\n",
       "      <th>object_type</th>\n",
       "      <th>request</th>\n",
       "      <th>response</th>\n",
       "      <th>rrt</th>\n",
       "      <th>rrt_max</th>\n",
       "      <th>server_error</th>\n",
       "      <th>server_error_ratio</th>\n",
       "      <th>timeout</th>\n",
       "      <th>timestamp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2025-06-05T16:00:00Z</td>\n",
       "      <td>6</td>\n",
       "      <td>0.04</td>\n",
       "      <td>6</td>\n",
       "      <td>0.04</td>\n",
       "      <td>hipstershop</td>\n",
       "      <td>pod_ns</td>\n",
       "      <td>14390</td>\n",
       "      <td>13608</td>\n",
       "      <td>7222.82</td>\n",
       "      <td>313534</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749139200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2025-06-05T16:01:00Z</td>\n",
       "      <td>36</td>\n",
       "      <td>0.34</td>\n",
       "      <td>36</td>\n",
       "      <td>0.34</td>\n",
       "      <td>hipstershop</td>\n",
       "      <td>pod_ns</td>\n",
       "      <td>11310</td>\n",
       "      <td>10647</td>\n",
       "      <td>8080.98</td>\n",
       "      <td>289420</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749139260</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2025-06-05T16:02:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>hipstershop</td>\n",
       "      <td>pod_ns</td>\n",
       "      <td>9978</td>\n",
       "      <td>9455</td>\n",
       "      <td>7166.54</td>\n",
       "      <td>220925</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749139320</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2025-06-05T16:03:00Z</td>\n",
       "      <td>48</td>\n",
       "      <td>0.44</td>\n",
       "      <td>48</td>\n",
       "      <td>0.44</td>\n",
       "      <td>hipstershop</td>\n",
       "      <td>pod_ns</td>\n",
       "      <td>11454</td>\n",
       "      <td>10855</td>\n",
       "      <td>7327.83</td>\n",
       "      <td>278674</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749139380</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2025-06-05T16:04:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>hipstershop</td>\n",
       "      <td>pod_ns</td>\n",
       "      <td>9928</td>\n",
       "      <td>9341</td>\n",
       "      <td>7818.02</td>\n",
       "      <td>268383</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1749139440</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1434</th>\n",
       "      <td>2025-06-06T15:55:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>hipstershop</td>\n",
       "      <td>pod_ns</td>\n",
       "      <td>11145</td>\n",
       "      <td>10549</td>\n",
       "      <td>6391.62</td>\n",
       "      <td>204386</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749225300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1435</th>\n",
       "      <td>2025-06-06T15:56:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>hipstershop</td>\n",
       "      <td>pod_ns</td>\n",
       "      <td>10240</td>\n",
       "      <td>9607</td>\n",
       "      <td>6258.45</td>\n",
       "      <td>201657</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749225360</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1436</th>\n",
       "      <td>2025-06-06T15:57:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>hipstershop</td>\n",
       "      <td>pod_ns</td>\n",
       "      <td>10623</td>\n",
       "      <td>10065</td>\n",
       "      <td>5928.49</td>\n",
       "      <td>215364</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749225420</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1437</th>\n",
       "      <td>2025-06-06T15:58:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>hipstershop</td>\n",
       "      <td>pod_ns</td>\n",
       "      <td>11442</td>\n",
       "      <td>10778</td>\n",
       "      <td>6674.32</td>\n",
       "      <td>208864</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749225480</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1438</th>\n",
       "      <td>2025-06-06T15:59:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>hipstershop</td>\n",
       "      <td>pod_ns</td>\n",
       "      <td>10264</td>\n",
       "      <td>9710</td>\n",
       "      <td>5762.93</td>\n",
       "      <td>159153</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749225540</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1439 rows × 15 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                      time  client_error  client_error_ratio  error  \\\n",
       "0     2025-06-05T16:00:00Z             6                0.04      6   \n",
       "1     2025-06-05T16:01:00Z            36                0.34     36   \n",
       "2     2025-06-05T16:02:00Z             0                0.00      0   \n",
       "3     2025-06-05T16:03:00Z            48                0.44     48   \n",
       "4     2025-06-05T16:04:00Z             0                0.00      0   \n",
       "...                    ...           ...                 ...    ...   \n",
       "1434  2025-06-06T15:55:00Z             0                0.00      0   \n",
       "1435  2025-06-06T15:56:00Z             0                0.00      0   \n",
       "1436  2025-06-06T15:57:00Z             0                0.00      0   \n",
       "1437  2025-06-06T15:58:00Z             0                0.00      0   \n",
       "1438  2025-06-06T15:59:00Z             0                0.00      0   \n",
       "\n",
       "      error_ratio    object_id object_type  request  response      rrt  \\\n",
       "0            0.04  hipstershop      pod_ns    14390     13608  7222.82   \n",
       "1            0.34  hipstershop      pod_ns    11310     10647  8080.98   \n",
       "2            0.00  hipstershop      pod_ns     9978      9455  7166.54   \n",
       "3            0.44  hipstershop      pod_ns    11454     10855  7327.83   \n",
       "4            0.00  hipstershop      pod_ns     9928      9341  7818.02   \n",
       "...           ...          ...         ...      ...       ...      ...   \n",
       "1434         0.00  hipstershop      pod_ns    11145     10549  6391.62   \n",
       "1435         0.00  hipstershop      pod_ns    10240      9607  6258.45   \n",
       "1436         0.00  hipstershop      pod_ns    10623     10065  5928.49   \n",
       "1437         0.00  hipstershop      pod_ns    11442     10778  6674.32   \n",
       "1438         0.00  hipstershop      pod_ns    10264      9710  5762.93   \n",
       "\n",
       "      rrt_max  server_error  server_error_ratio  timeout   timestamp  \n",
       "0      313534             0                 0.0        0  1749139200  \n",
       "1      289420             0                 0.0        0  1749139260  \n",
       "2      220925             0                 0.0        0  1749139320  \n",
       "3      278674             0                 0.0        0  1749139380  \n",
       "4      268383             0                 0.0        2  1749139440  \n",
       "...       ...           ...                 ...      ...         ...  \n",
       "1434   204386             0                 0.0        0  1749225300  \n",
       "1435   201657             0                 0.0        0  1749225360  \n",
       "1436   215364             0                 0.0        0  1749225420  \n",
       "1437   208864             0                 0.0        0  1749225480  \n",
       "1438   159153             0                 0.0        0  1749225540  \n",
       "\n",
       "[1439 rows x 15 columns]"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "read_apm_pod(basepath='../phaseone/2025-06-06/metric-parquet/apm/',pod='ns_hipstershop',date='2025-06-06')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "f54b1828-50b4-40dc-9cf1-56d0006da779",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>time</th>\n",
       "      <th>client_error</th>\n",
       "      <th>client_error_ratio</th>\n",
       "      <th>error</th>\n",
       "      <th>error_ratio</th>\n",
       "      <th>object_id</th>\n",
       "      <th>object_type</th>\n",
       "      <th>request</th>\n",
       "      <th>response</th>\n",
       "      <th>rrt</th>\n",
       "      <th>rrt_max</th>\n",
       "      <th>server_error</th>\n",
       "      <th>server_error_ratio</th>\n",
       "      <th>timeout</th>\n",
       "      <th>timestamp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2025-06-05T16:00:00Z</td>\n",
       "      <td>6</td>\n",
       "      <td>0.9</td>\n",
       "      <td>6</td>\n",
       "      <td>0.9</td>\n",
       "      <td>adservice-0</td>\n",
       "      <td>pod</td>\n",
       "      <td>658</td>\n",
       "      <td>664</td>\n",
       "      <td>3227.73</td>\n",
       "      <td>42886</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749110400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2025-06-05T16:01:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>adservice-0</td>\n",
       "      <td>pod</td>\n",
       "      <td>259</td>\n",
       "      <td>260</td>\n",
       "      <td>3296.42</td>\n",
       "      <td>42418</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749110460</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2025-06-05T16:02:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>adservice-0</td>\n",
       "      <td>pod</td>\n",
       "      <td>472</td>\n",
       "      <td>476</td>\n",
       "      <td>3237.11</td>\n",
       "      <td>46649</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749110520</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2025-06-05T16:03:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>adservice-0</td>\n",
       "      <td>pod</td>\n",
       "      <td>266</td>\n",
       "      <td>268</td>\n",
       "      <td>3492.21</td>\n",
       "      <td>46109</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749110580</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2025-06-05T16:04:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>adservice-0</td>\n",
       "      <td>pod</td>\n",
       "      <td>470</td>\n",
       "      <td>472</td>\n",
       "      <td>3094.00</td>\n",
       "      <td>40025</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749110640</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1434</th>\n",
       "      <td>2025-06-06T15:55:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>adservice-0</td>\n",
       "      <td>pod</td>\n",
       "      <td>355</td>\n",
       "      <td>356</td>\n",
       "      <td>3429.08</td>\n",
       "      <td>46105</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749196500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1435</th>\n",
       "      <td>2025-06-06T15:56:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>adservice-0</td>\n",
       "      <td>pod</td>\n",
       "      <td>367</td>\n",
       "      <td>368</td>\n",
       "      <td>3177.98</td>\n",
       "      <td>40032</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749196560</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1436</th>\n",
       "      <td>2025-06-06T15:57:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>adservice-0</td>\n",
       "      <td>pod</td>\n",
       "      <td>362</td>\n",
       "      <td>364</td>\n",
       "      <td>3093.77</td>\n",
       "      <td>39761</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749196620</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1437</th>\n",
       "      <td>2025-06-06T15:58:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>adservice-0</td>\n",
       "      <td>pod</td>\n",
       "      <td>358</td>\n",
       "      <td>360</td>\n",
       "      <td>3318.46</td>\n",
       "      <td>44117</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749196680</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1438</th>\n",
       "      <td>2025-06-06T15:59:00Z</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>adservice-0</td>\n",
       "      <td>pod</td>\n",
       "      <td>365</td>\n",
       "      <td>368</td>\n",
       "      <td>3066.36</td>\n",
       "      <td>45692</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1749196740</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1439 rows × 15 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                      time  client_error  client_error_ratio  error  \\\n",
       "0     2025-06-05T16:00:00Z             6                 0.9      6   \n",
       "1     2025-06-05T16:01:00Z             0                 0.0      0   \n",
       "2     2025-06-05T16:02:00Z             0                 0.0      0   \n",
       "3     2025-06-05T16:03:00Z             0                 0.0      0   \n",
       "4     2025-06-05T16:04:00Z             0                 0.0      0   \n",
       "...                    ...           ...                 ...    ...   \n",
       "1434  2025-06-06T15:55:00Z             0                 0.0      0   \n",
       "1435  2025-06-06T15:56:00Z             0                 0.0      0   \n",
       "1436  2025-06-06T15:57:00Z             0                 0.0      0   \n",
       "1437  2025-06-06T15:58:00Z             0                 0.0      0   \n",
       "1438  2025-06-06T15:59:00Z             0                 0.0      0   \n",
       "\n",
       "      error_ratio    object_id object_type  request  response      rrt  \\\n",
       "0             0.9  adservice-0         pod      658       664  3227.73   \n",
       "1             0.0  adservice-0         pod      259       260  3296.42   \n",
       "2             0.0  adservice-0         pod      472       476  3237.11   \n",
       "3             0.0  adservice-0         pod      266       268  3492.21   \n",
       "4             0.0  adservice-0         pod      470       472  3094.00   \n",
       "...           ...          ...         ...      ...       ...      ...   \n",
       "1434          0.0  adservice-0         pod      355       356  3429.08   \n",
       "1435          0.0  adservice-0         pod      367       368  3177.98   \n",
       "1436          0.0  adservice-0         pod      362       364  3093.77   \n",
       "1437          0.0  adservice-0         pod      358       360  3318.46   \n",
       "1438          0.0  adservice-0         pod      365       368  3066.36   \n",
       "\n",
       "      rrt_max  server_error  server_error_ratio  timeout   timestamp  \n",
       "0       42886             0                   0        0  1749110400  \n",
       "1       42418             0                   0        0  1749110460  \n",
       "2       46649             0                   0        0  1749110520  \n",
       "3       46109             0                   0        0  1749110580  \n",
       "4       40025             0                   0        0  1749110640  \n",
       "...       ...           ...                 ...      ...         ...  \n",
       "1434    46105             0                   0        0  1749196500  \n",
       "1435    40032             0                   0        0  1749196560  \n",
       "1436    39761             0                   0        0  1749196620  \n",
       "1437    44117             0                   0        0  1749196680  \n",
       "1438    45692             0                   0        0  1749196740  \n",
       "\n",
       "[1439 rows x 15 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "read_apm_pod(basepath='../phaseone/2025-06-06/metric-parquet/apm/pod/',pod='adservice-0',date='2025-06-06')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "d90fb19e-5e87-46fc-8738-b468b722b22a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "5207fdf3-5b46-4f72-8121-de4ca4e2140f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'checkoutservice-1': {'instance': 'aiops-k8s-01', 'node': '223.193.36.56'},\n",
       " 'emailservice-1': {'instance': 'aiops-k8s-01', 'node': '223.193.36.56'},\n",
       " 'productcatalogservice-0': {'instance': 'aiops-k8s-06',\n",
       "  'node': '223.193.36.128'},\n",
       " 'recommendationservice-1': {'instance': 'aiops-k8s-03',\n",
       "  'node': '223.193.36.89'},\n",
       " 'shippingservice-1': {'instance': 'aiops-k8s-08', 'node': '223.193.36.130'},\n",
       " 'adservice-0': {'instance': 'aiops-k8s-03', 'node': '223.193.36.89'},\n",
       " 'cartservice-2': {'instance': 'aiops-k8s-03', 'node': '223.193.36.89'},\n",
       " 'frontend-0': {'instance': 'aiops-k8s-03', 'node': '223.193.36.89'},\n",
       " 'paymentservice-1': {'instance': 'aiops-k8s-03', 'node': '223.193.36.89'},\n",
       " 'recommendationservice-0': {'instance': 'aiops-k8s-08',\n",
       "  'node': '223.193.36.130'},\n",
       " 'checkoutservice-0': {'instance': 'aiops-k8s-04', 'node': '223.193.36.109'},\n",
       " 'currencyservice-1': {'instance': 'aiops-k8s-04', 'node': '223.193.36.109'},\n",
       " 'frontend-2': {'instance': 'aiops-k8s-04', 'node': '223.193.36.109'},\n",
       " 'currencyservice-0': {'instance': 'aiops-k8s-05', 'node': '223.193.36.113'},\n",
       " 'paymentservice-2': {'instance': 'aiops-k8s-05', 'node': '223.193.36.113'},\n",
       " 'productcatalogservice-2': {'instance': 'aiops-k8s-03',\n",
       "  'node': '223.193.36.89'},\n",
       " 'checkoutservice-2': {'instance': 'aiops-k8s-06', 'node': '223.193.36.128'},\n",
       " 'emailservice-2': {'instance': 'aiops-k8s-06', 'node': '223.193.36.128'},\n",
       " 'productcatalogservice-1': {'instance': 'aiops-k8s-01',\n",
       "  'node': '223.193.36.56'},\n",
       " 'adservice-1': {'instance': 'aiops-k8s-07', 'node': '223.193.36.129'},\n",
       " 'cartservice-0': {'instance': 'aiops-k8s-07', 'node': '223.193.36.129'},\n",
       " 'currencyservice-2': {'instance': 'aiops-k8s-07', 'node': '223.193.36.129'},\n",
       " 'emailservice-0': {'instance': 'aiops-k8s-07', 'node': '223.193.36.129'},\n",
       " 'frontend-1': {'instance': 'aiops-k8s-07', 'node': '223.193.36.129'},\n",
       " 'shippingservice-0': {'instance': 'aiops-k8s-01', 'node': '223.193.36.56'},\n",
       " 'adservice-2': {'instance': 'aiops-k8s-08', 'node': '223.193.36.130'},\n",
       " 'cartservice-1': {'instance': 'aiops-k8s-08', 'node': '223.193.36.130'},\n",
       " 'paymentservice-0': {'instance': 'aiops-k8s-08', 'node': '223.193.36.130'},\n",
       " 'recommendationservice-2': {'instance': 'aiops-k8s-01',\n",
       "  'node': '223.193.36.56'},\n",
       " 'redis-cart-0': {'instance': 'aiops-k8s-08', 'node': '223.193.36.130'},\n",
       " 'shippingservice-2': {'instance': 'aiops-k8s-07', 'node': '223.193.36.129'}}"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "topo"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "27a65aba-8fd7-4524-8a4e-ae93164eeea3",
   "metadata": {},
   "source": [
    "# 所有的service 类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "045c4f75-c98a-49de-8ee7-9e2b21521ef9",
   "metadata": {},
   "outputs": [],
   "source": [
    "basepath = '/app/jupyter/aiops/aiopschallengedata2025/sample/abnormal/case1/log-parquet/'\n",
    "datetime = '2025-04-28_03-59-00'\n",
    "\n",
    "class servicelog():\n",
    "    def __init__(self,basepath,datetime):\n",
    "        data = None\n",
    "        self.basepath = basepath\n",
    "        for ip,idatetime in enumerate(datetime):\n",
    "            if data is None:\n",
    "                try:\n",
    "                    data = load_in_file(f'{basepath}/log_filebeat-server_{idatetime}.parquet' )\n",
    "                except Exception as err:\n",
    "                    print(f'Failed to loadding {idatetime}')\n",
    "                    continue\n",
    "            else:\n",
    "                try:\n",
    "                    data = pd.concat([data,load_in_file(f'{basepath}/log_filebeat-server_{idatetime}.parquet' )],axis = 0)\n",
    "                except Exception as err:\n",
    "                    print(f'Failed to loadding {idatetime}')\n",
    "                    continue\n",
    "        print(data.shape)\n",
    "        delnullcol(data)\n",
    "        data['timestamp'] = data['@timestamp'].apply(lambda x: transtime(x))\n",
    "        data['kps'] = data['k8_pod'].apply(lambda x: x.split('-')[0])\n",
    "        self.fulllogs = {}\n",
    "        for kps in data['kps'].drop_duplicates().values:\n",
    "            self.fulllogs[kps] = data[data['kps']==kps]\n",
    "\n",
    "    def preprocess(self):\n",
    "        for kps in self.fulllogs:\n",
    "            try:\n",
    "                self.fulllogs[kps].drop(columns=['kps','k8_namespace','agent_name','@timestamp'],inplace=True)\n",
    "                self.fulllogs[kps]['severity'] = self.fulllogs[kps]['message'].apply(lambda x: json.loads(x)['severity'] if len(x) > 0 else '')\n",
    "            except Exception as err:\n",
    "                print(f'Error while processing {kps}:',err)\n",
    "                self.fulllogs[kps]['severity'] = ''\n",
    "                continue\n",
    "    def save(self):\n",
    "        import pickle\n",
    "        pickle.dump(self.fulllogs,open(f'{self.basepath}/service_logs.pkl','wb'))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "294d68cf-3cd4-46ad-86f5-6a707ea52e08",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Failed to loadding 2025-06-06_28-00-00\n",
      "(565199, 6)\n",
      "Error while processing adservice: 'severity'\n",
      "Error while processing cartservice: Expecting value: line 1 column 1 (char 0)\n",
      "Error while processing redis: Extra data: line 1 column 2 (char 1)\n"
     ]
    }
   ],
   "source": [
    "data = servicelog(basepath='/app/jupyter/aiops/phaseone/2025-06-06/log-parquet',datetime=['2025-06-06_18-00-00','2025-06-06_28-00-00'])\n",
    "data.preprocess()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "45656c67-c5b0-4050-8a3b-c479393516ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "data.save()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "e2034528-4155-43ac-b763-75160653a66d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "33    info\n",
       "Name: message, dtype: object"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# TODO:有\n",
    "['message'].apply(lambda x: json.loads(x)['severity']).drop_duplicates()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5b804f15-abce-491f-b3a2-b51691eb8eb4",
   "metadata": {},
   "source": [
    "# Front end info"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "92677ccb-e81e-47ed-8de8-aeee25d67217",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8         {'currency': 'CAD', 'http.req.id': 'a0f884c3-b...\n",
       "9         {'http.req.id': 'a1c172b7-5d8f-41f5-ab42-440c5...\n",
       "10        {'http.req.id': 'a0f884c3-b0d0-43aa-80ce-83505...\n",
       "11        {'currency': 'CAD', 'http.req.id': 'a1c172b7-5...\n",
       "12        {'http.req.id': 'a0f884c3-b0d0-43aa-80ce-83505...\n",
       "                                ...                        \n",
       "406764    {'http.req.id': '24bba682-f560-4f7a-bdd3-981c5...\n",
       "406765    {'http.req.id': '6b33b6f2-cd99-44f9-81b7-71946...\n",
       "406771    {'http.req.id': 'cc24f059-9ee7-4bbc-a7f6-e8907...\n",
       "406806    {'http.req.id': '6b33b6f2-cd99-44f9-81b7-71946...\n",
       "406812    {'http.req.id': 'b27dfa27-5e57-4770-9276-1fecc...\n",
       "Name: message, Length: 72863, dtype: object"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[data['kps']=='frontend']['message'].apply(lambda x: json.loads(x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "f3df516b-c66f-4d23-ac3a-69147efcd00e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGdCAYAAAAxCSikAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAuoklEQVR4nO3dfXhU5Z3/8c8kkAkoGcCQmUQDCYJw8ZQoSIz1AX+MhCw/lnR3FVi2YFZxpdhLGp+Iq6DV30apddE2hfqAwd1qgFXjrmAqjQaKBigPKaLIAo0GJBMeNBkSJcHk/v1hmTomgUwEcmd4v67rXGbOuc89329OdD6eOTPHYYwxAgAAsFhEZxcAAABwOgQWAABgPQILAACwHoEFAABYj8ACAACsR2ABAADWI7AAAADrEVgAAID1unV2AWdCc3OzDh48qF69esnhcHR2OQAAoB2MMTp27JgSEhIUEXHqcyhhEVgOHjyoxMTEzi4DAAB0wP79+3XJJZecckxYBJZevXpJ+qbhmJiYTq4GAAC0h9/vV2JiYuB1/FTCIrCcfBsoJiaGwAIAQBfTnss5uOgWAABYj8ACAACsR2ABAADWI7AAAADrEVgAAID1CCwAAMB6BBYAAGA9AgsAALAegQUAAFgvpMCSl5enK6+8Ur169VJcXJyysrK0e/fu0+63atUqDR06VNHR0Ro5cqTWrFkTtN0YowULFig+Pl49evSQ1+vVnj17QusEAACErZACy7p16zR37lxt3LhRa9eu1YkTJzRhwgTV19e3uc/777+v6dOn69Zbb9X27duVlZWlrKws7dy5MzBm0aJFeuaZZ7R06VJt2rRJF1xwgTIyMnT8+PGOdwYAAMKGwxhjOrrz4cOHFRcXp3Xr1um6665rdczUqVNVX1+vN998M7DuqquuUmpqqpYuXSpjjBISEnT33XfrnnvukSTV1tbK7XaroKBA06ZNO20dfr9fLpdLtbW13EsIAIAuIpTX7+9188Pa2lpJUt++fdscU1ZWppycnKB1GRkZKioqkiRVVFTI5/PJ6/UGtrtcLqWlpamsrKzVwNLQ0KCGhobAY7/f/33awDlSvr9GWfnvdXYZQFi7cZhbf9hzWMdPNOuCqEh9+LOJnV0ScEZ0+KLb5uZmzZs3Tz/4wQ80YsSINsf5fD653e6gdW63Wz6fL7D95Lq2xnxXXl6eXC5XYElMTOxoGziHCCvA2bf2o2odP9EsSapvbNInR9p+yx7oSjocWObOnaudO3eqsLDwTNbTLrm5uaqtrQ0s+/fvP+c1AEBXcKSu4fSDgC6gQ28J3XnnnXrzzTe1fv16XXLJJacc6/F4VF1dHbSuurpaHo8nsP3kuvj4+KAxqamprc7pdDrldDo7UjoAAOiCQjrDYozRnXfeqddff13vvPOOkpOTT7tPenq6SkpKgtatXbtW6enpkqTk5GR5PJ6gMX6/X5s2bQqMAQAA57eQzrDMnTtXL7/8st544w316tUrcI2Jy+VSjx49JEkzZ87UxRdfrLy8PEnSXXfdpeuvv16/+MUvNGnSJBUWFmrLli169tlnJUkOh0Pz5s3TY489psGDBys5OVkPPfSQEhISlJWVdQZbBQAAXVVIgWXJkiWSpHHjxgWtf/HFF3XLLbdIkiorKxUR8dcTN1dffbVefvllPfjgg3rggQc0ePBgFRUVBV2oe99996m+vl633367ampqdM0116i4uFjR0dEdbAsAAIST7/U9LLbge1i6hqT5qzu7BOC88193pGtMUttfPQF0plBev7mXEAAAsB6BBQAAWI/AAgAArEdgAQAA1iOwAAAA6xFYAACA9QgsABDGuvz3VgB/QWABAADWI7AAAADrEVgAAID1CCwAAMB6BBYAAGA9AgsAALAegQUAAFiPwAIAAKxHYAEAANYjsAAAAOsRWAAAgPUILAAAwHoEFgAIY4a7HyJMEFgAAID1CCwAAMB6BBYAAGA9AgsAALAegQUAAFiPwAIAAKxHYAEAANYjsAAAAOsRWAAAgPUILAAAwHoEFgAAYL2QA8v69es1efJkJSQkyOFwqKio6JTjb7nlFjkcjhbL8OHDA2MefvjhFtuHDh0acjMAACA8hRxY6uvrlZKSovz8/HaNf/rpp1VVVRVY9u/fr759++qmm24KGjd8+PCgcRs2bAi1NADAdxjufogw0S3UHTIzM5WZmdnu8S6XSy6XK/C4qKhIX3zxhbKzs4ML6dZNHo8n1HIAAMB54Jxfw/LCCy/I6/VqwIABQev37NmjhIQEDRw4UDNmzFBlZWWbczQ0NMjv9wctAAAgfJ3TwHLw4EG99dZbuu2224LWp6WlqaCgQMXFxVqyZIkqKip07bXX6tixY63Ok5eXFzhz43K5lJiYeC7KBwAAneScBpbly5erd+/eysrKClqfmZmpm266SaNGjVJGRobWrFmjmpoarVy5stV5cnNzVVtbG1j2799/DqoHAACdJeRrWDrKGKNly5bpRz/6kaKiok45tnfv3rrsssu0d+/eVrc7nU45nc6zUSYAALDQOTvDsm7dOu3du1e33nrracfW1dVp3759io+PPweVAQAA24UcWOrq6lReXq7y8nJJUkVFhcrLywMXyebm5mrmzJkt9nvhhReUlpamESNGtNh2zz33aN26dfrkk0/0/vvv64c//KEiIyM1ffr0UMsDAABhKOS3hLZs2aIbbrgh8DgnJ0eSNGvWLBUUFKiqqqrFJ3xqa2v16quv6umnn251zgMHDmj69Ok6evSo+vXrp2uuuUYbN25Uv379Qi0PAACEoZADy7hx4075RUQFBQUt1rlcLn355Zdt7lNYWBhqGQAA4DzCvYQAAID1CCwAAMB6BBYAAGA9AgsAhDFufYhwQWABAADWI7AAAADrEVgAAID1CCwAAMB6BBYAAGA9AgsAALAegQUAAFiPwAIAAKxHYAEAANYjsAAAAOsRWAAAgPUILAAQxgw3E0KYILAAAADrEVgAAID1CCwAAMB6BBYAAGA9AgsAALAegQUAAFiPwAIAAKxHYAEAANYjsAAAAOsRWAAAgPUILAAAwHoEFgAAYD0CCwCEMSPufojwQGABAADWI7AAAADrhRxY1q9fr8mTJyshIUEOh0NFRUWnHF9aWiqHw9Fi8fl8QePy8/OVlJSk6OhopaWlafPmzaGWBgAAwlTIgaW+vl4pKSnKz88Pab/du3erqqoqsMTFxQW2rVixQjk5OVq4cKG2bdumlJQUZWRk6NChQ6GWBwAAwlC3UHfIzMxUZmZmyE8UFxen3r17t7rtqaee0uzZs5WdnS1JWrp0qVavXq1ly5Zp/vz5IT8XAAAIL+fsGpbU1FTFx8frxhtv1HvvvRdY39jYqK1bt8rr9f61qIgIeb1elZWVtTpXQ0OD/H5/0AIAAMLXWQ8s8fHxWrp0qV599VW9+uqrSkxM1Lhx47Rt2zZJ0pEjR9TU1CS32x20n9vtbnGdy0l5eXlyuVyBJTEx8Wy3AQAAOlHIbwmFasiQIRoyZEjg8dVXX619+/bp3//93/Uf//EfHZozNzdXOTk5gcd+v5/QAgBAGDvrgaU1Y8eO1YYNGyRJsbGxioyMVHV1ddCY6upqeTyeVvd3Op1yOp1nvU4AAGCHTvkelvLycsXHx0uSoqKiNHr0aJWUlAS2Nzc3q6SkROnp6Z1RHgAAsEzIZ1jq6uq0d+/ewOOKigqVl5erb9++6t+/v3Jzc/XZZ5/ppZdekiQtXrxYycnJGj58uI4fP67nn39e77zzjt5+++3AHDk5OZo1a5bGjBmjsWPHavHixaqvrw98aggAAJzfQg4sW7Zs0Q033BB4fPJaklmzZqmgoEBVVVWqrKwMbG9sbNTdd9+tzz77TD179tSoUaP0+9//PmiOqVOn6vDhw1qwYIF8Pp9SU1NVXFzc4kJcAABwfnIYY7r8nbH8fr9cLpdqa2sVExPT2eWgDUnzV3d2CcB55+Xb0nT1oNjOLgNoVSiv39xLCAAAWI/AAgAArEdgAQAA1iOwAAAA6xFYAACA9QgsAADAegQWAABgPQILAACwHoEFAABYj8ACAACsR2ABAADWI7AAAADrEVgAIIx1+bvbAn9BYAEAANYjsAAAAOsRWAAAgPUILAAAwHoEFgAAYD0CCwAAsB6BBQAAWI/AAgAArEdgAQAA1iOwAAAA6xFYAACA9QgsAADAegQWAAhjhrsfIkwQWAAAgPUILAAAwHoEFgAAYD0CCwAAsB6BBQAAWC/kwLJ+/XpNnjxZCQkJcjgcKioqOuX41157TTfeeKP69eunmJgYpaen63e/+13QmIcfflgOhyNoGTp0aKilAQCAMBVyYKmvr1dKSory8/PbNX79+vW68cYbtWbNGm3dulU33HCDJk+erO3btweNGz58uKqqqgLLhg0bQi0NAACEqW6h7pCZmanMzMx2j1+8eHHQ43/7t3/TG2+8of/5n//R5Zdf/tdCunWTx+MJtRwAAHAeOOfXsDQ3N+vYsWPq27dv0Po9e/YoISFBAwcO1IwZM1RZWdnmHA0NDfL7/UELAAAIX+c8sDz55JOqq6vTzTffHFiXlpamgoICFRcXa8mSJaqoqNC1116rY8eOtTpHXl6eXC5XYElMTDxX5QMAgE5wTgPLyy+/rEceeUQrV65UXFxcYH1mZqZuuukmjRo1ShkZGVqzZo1qamq0cuXKVufJzc1VbW1tYNm/f/+5agEAAHSCkK9h6ajCwkLddtttWrVqlbxe7ynH9u7dW5dddpn27t3b6nan0ymn03k2ygQAABY6J2dYXnnlFWVnZ+uVV17RpEmTTju+rq5O+/btU3x8/DmoDgDClxF3P0R4CPkMS11dXdCZj4qKCpWXl6tv377q37+/cnNz9dlnn+mll16S9M3bQLNmzdLTTz+ttLQ0+Xw+SVKPHj3kcrkkSffcc48mT56sAQMG6ODBg1q4cKEiIyM1ffr0M9EjAADo4kI+w7JlyxZdfvnlgY8k5+Tk6PLLL9eCBQskSVVVVUGf8Hn22Wf19ddfa+7cuYqPjw8sd911V2DMgQMHNH36dA0ZMkQ333yzLrroIm3cuFH9+vX7vv0BAIAwEPIZlnHjxsmYtk8xFhQUBD0uLS097ZyFhYWhlgEAAM4j3EsIAABYj8ACAACsR2ABAADWI7AAAADrEVgAAID1CCwAAMB6BBYAAGA9AgsAALAegQUAAFiPwAIAYewUX0wOdCkEFgAAYD0CCwAAsB6BBQAAWI/AAgAArEdgAQAA1iOwAAAA6xFYAACA9QgsAADAegQWAABgPQILAACwHoEFAABYj8ACAACsR2ABgDDGvQ8RLggsAADAegQWAABgPQILAACwHoEFAABYj8ACAACsR2ABAADWI7AAAADrEVgAAID1Qg4s69ev1+TJk5WQkCCHw6GioqLT7lNaWqorrrhCTqdTgwYNUkFBQYsx+fn5SkpKUnR0tNLS0rR58+ZQSwMAAGEq5MBSX1+vlJQU5efnt2t8RUWFJk2apBtuuEHl5eWaN2+ebrvtNv3ud78LjFmxYoVycnK0cOFCbdu2TSkpKcrIyNChQ4dCLQ8AAIQhhzGmw9/c7HA49PrrrysrK6vNMffff79Wr16tnTt3BtZNmzZNNTU1Ki4uliSlpaXpyiuv1K9+9StJUnNzsxITE/WTn/xE8+fPP20dfr9fLpdLtbW1iomJ6Wg7OMuS5q/u7BKA887yfx6r6y/r19llAK0K5fX7rF/DUlZWJq/XG7QuIyNDZWVlkqTGxkZt3bo1aExERIS8Xm9gzHc1NDTI7/cHLQCAlr7H/5MCVjnrgcXn88ntdgetc7vd8vv9+uqrr3TkyBE1NTW1Osbn87U6Z15enlwuV2BJTEw8a/UDAIDO1yU/JZSbm6va2trAsn///s4uCQAAnEXdzvYTeDweVVdXB62rrq5WTEyMevToocjISEVGRrY6xuPxtDqn0+mU0+k8azUDAAC7nPUzLOnp6SopKQlat3btWqWnp0uSoqKiNHr06KAxzc3NKikpCYwBAADnt5ADS11dncrLy1VeXi7pm48tl5eXq7KyUtI3b9fMnDkzMP6OO+7Qn//8Z9133336+OOP9etf/1orV67UT3/608CYnJwcPffcc1q+fLl27dqlOXPmqL6+XtnZ2d+zPQAAEA5Cfktoy5YtuuGGGwKPc3JyJEmzZs1SQUGBqqqqAuFFkpKTk7V69Wr99Kc/1dNPP61LLrlEzz//vDIyMgJjpk6dqsOHD2vBggXy+XxKTU1VcXFxiwtxAQDA+el7fQ+LLfgelq6B72EBzr2C7Cs1bkhcZ5cBtMqq72EBAAD4vggsAADAegQWAABgPQILAACwHoEFAABYj8ACAGGsy38MFPgLAgsAALAegQUAAFiPwAIAAKxHYAEAANYjsAAAAOsRWAAAgPUILAAAwHoEFgAAYD0CCwAAsB6BBQAAWI/AAgAArEdgAQAA1iOwAEA44+6HCBMEFgAAYD0CCwAAsB6BBQAAWI/AAgAArEdgAQAA1iOwAAAA6xFYAACA9QgsAADAegQWAABgPQILAACwHoEFAABYj8ACAACs16HAkp+fr6SkJEVHRystLU2bN29uc+y4cePkcDhaLJMmTQqMueWWW1psnzhxYkdKAwB8i+HuhwgT3ULdYcWKFcrJydHSpUuVlpamxYsXKyMjQ7t371ZcXFyL8a+99poaGxsDj48ePaqUlBTddNNNQeMmTpyoF198MfDY6XSGWhoAAAhTIZ9heeqppzR79mxlZ2dr2LBhWrp0qXr27Klly5a1Or5v377yeDyBZe3aterZs2eLwOJ0OoPG9enTp2MdAQCAsBNSYGlsbNTWrVvl9Xr/OkFEhLxer8rKyto1xwsvvKBp06bpggsuCFpfWlqquLg4DRkyRHPmzNHRo0fbnKOhoUF+vz9oAQAA4SukwHLkyBE1NTXJ7XYHrXe73fL5fKfdf/Pmzdq5c6duu+22oPUTJ07USy+9pJKSEj3xxBNat26dMjMz1dTU1Oo8eXl5crlcgSUxMTGUNgAAQBcT8jUs38cLL7ygkSNHauzYsUHrp02bFvh55MiRGjVqlC699FKVlpZq/PjxLebJzc1VTk5O4LHf7ye0AAAQxkI6wxIbG6vIyEhVV1cHra+urpbH4znlvvX19SosLNStt9562ucZOHCgYmNjtXfv3la3O51OxcTEBC0AACB8hRRYoqKiNHr0aJWUlATWNTc3q6SkROnp6afcd9WqVWpoaNA//dM/nfZ5Dhw4oKNHjyo+Pj6U8gAAQJgK+VNCOTk5eu6557R8+XLt2rVLc+bMUX19vbKzsyVJM2fOVG5ubov9XnjhBWVlZemiiy4KWl9XV6d7771XGzdu1CeffKKSkhJNmTJFgwYNUkZGRgfbAgAA4STka1imTp2qw4cPa8GCBfL5fEpNTVVxcXHgQtzKykpFRATnoN27d2vDhg16++23W8wXGRmpHTt2aPny5aqpqVFCQoImTJigRx99lO9iAQAAkiSHMabLfw2i3++Xy+VSbW0t17NYLGn+6s4uATjvLLtljP7PUPfpBwKdIJTXb+4lBAAArEdgAQAA1iOwAEAY6/pv+gPfILAAAADrEVgAAID1CCwAAMB6BBYAAGA9AgsAALAegQUAAFiPwAIAAKxHYAEAANYjsAAAAOsRWAAAgPUILAAAwHoEFgAAYD0CCwCEMW5+iHBBYAEAANYjsAAAAOsRWAAAgPUILAAAwHoEFgAAYD0CCwAAsB6BBQAAWI/AAgAArEdgAQAA1iOwAAAA6xFYAACA9QgsAADAegQWAAhj3PsQ4YLAAgAArEdgAQAA1utQYMnPz1dSUpKio6OVlpamzZs3tzm2oKBADocjaImOjg4aY4zRggULFB8frx49esjr9WrPnj0dKQ0AAIShkAPLihUrlJOTo4ULF2rbtm1KSUlRRkaGDh061OY+MTExqqqqCiyffvpp0PZFixbpmWee0dKlS7Vp0yZdcMEFysjI0PHjx0PvCAAAhJ2QA8tTTz2l2bNnKzs7W8OGDdPSpUvVs2dPLVu2rM19HA6HPB5PYHG73YFtxhgtXrxYDz74oKZMmaJRo0bppZde0sGDB1VUVNShpgAAQHgJKbA0NjZq69at8nq9f50gIkJer1dlZWVt7ldXV6cBAwYoMTFRU6ZM0YcffhjYVlFRIZ/PFzSny+VSWlpam3M2NDTI7/cHLQAAIHyFFFiOHDmipqamoDMkkuR2u+Xz+VrdZ8iQIVq2bJneeOMN/ed//qeam5t19dVX68CBA5IU2C+UOfPy8uRyuQJLYmJiKG0AAIAu5qx/Sig9PV0zZ85Uamqqrr/+er322mvq16+ffvOb33R4ztzcXNXW1gaW/fv3n8GKAQCAbUIKLLGxsYqMjFR1dXXQ+urqank8nnbN0b17d11++eXau3evJAX2C2VOp9OpmJiYoAUAAISvkAJLVFSURo8erZKSksC65uZmlZSUKD09vV1zNDU16YMPPlB8fLwkKTk5WR6PJ2hOv9+vTZs2tXtOAAAQ3rqFukNOTo5mzZqlMWPGaOzYsVq8eLHq6+uVnZ0tSZo5c6Yuvvhi5eXlSZJ+9rOf6aqrrtKgQYNUU1Ojn//85/r000912223SfrmE0Tz5s3TY489psGDBys5OVkPPfSQEhISlJWVdeY6BQAAXVbIgWXq1Kk6fPiwFixYIJ/Pp9TUVBUXFwcumq2srFRExF9P3HzxxReaPXu2fD6f+vTpo9GjR+v999/XsGHDAmPuu+8+1dfX6/bbb1dNTY2uueYaFRcXt/iCOQAAcH5yGGO6/L2x/H6/XC6XamtruZ7FYknzV3d2CcB559kfjdaE4e27xhA410J5/eZeQgAAwHoEFgAAYD0CCwAAsB6BBQAAWI/AAgAArEdgAQAA1iOwAAAA6xFYAACA9QgsAADAegQWAABgPQILAACwHoEFAABYj8ACAGGsy9/dFvgLAgsAALAegQUAAFiPwAIAAKxHYAEAANYjsAAAAOsRWAAAgPUILAAAwHoEFgAAYD0CCwAAsB6BBQAAWI/AAgAArEdgAYAwZriZEMIEgQUAAFiPwAIAAKxHYAEAANYjsAAAAOsRWAAAgPUILAAAwHodCiz5+flKSkpSdHS00tLStHnz5jbHPvfcc7r22mvVp08f9enTR16vt8X4W265RQ6HI2iZOHFiR0oDAABhKOTAsmLFCuXk5GjhwoXatm2bUlJSlJGRoUOHDrU6vrS0VNOnT9e7776rsrIyJSYmasKECfrss8+Cxk2cOFFVVVWB5ZVXXulYRwAAIOyEHFieeuopzZ49W9nZ2Ro2bJiWLl2qnj17atmyZa2O/+1vf6sf//jHSk1N1dChQ/X888+rublZJSUlQeOcTqc8Hk9g6dOnT8c6AgAAYSekwNLY2KitW7fK6/X+dYKICHm9XpWVlbVrji+//FInTpxQ3759g9aXlpYqLi5OQ4YM0Zw5c3T06NE252hoaJDf7w9aAABA+AopsBw5ckRNTU1yu91B691ut3w+X7vmuP/++5WQkBAUeiZOnKiXXnpJJSUleuKJJ7Ru3TplZmaqqamp1Tny8vLkcrkCS2JiYihtAACALqbbuXyyxx9/XIWFhSotLVV0dHRg/bRp0wI/jxw5UqNGjdKll16q0tJSjR8/vsU8ubm5ysnJCTz2+/2EFgAAwlhIZ1hiY2MVGRmp6urqoPXV1dXyeDyn3PfJJ5/U448/rrffflujRo065diBAwcqNjZWe/fubXW70+lUTExM0AIAaA13P0R4CCmwREVFafTo0UEXzJ68gDY9Pb3N/RYtWqRHH31UxcXFGjNmzGmf58CBAzp69Kji4+NDKQ8AAISpkD8llJOTo+eee07Lly/Xrl27NGfOHNXX1ys7O1uSNHPmTOXm5gbGP/HEE3rooYe0bNkyJSUlyefzyefzqa6uTpJUV1ene++9Vxs3btQnn3yikpISTZkyRYMGDVJGRsYZahMAAHRlIV/DMnXqVB0+fFgLFiyQz+dTamqqiouLAxfiVlZWKiLirzloyZIlamxs1D/8wz8EzbNw4UI9/PDDioyM1I4dO7R8+XLV1NQoISFBEyZM0KOPPiqn0/k92wMAAOHAYYzp8m9w+v1+uVwu1dbWcj2LxZLmr+7sEoDzztJ/ukITR/D2OuwUyus39xICAADWI7AAAADrEVgAAID1CCwAAMB6BBYACGNd/2MVwDcILAAAwHoEFgAAYD0CCwAAsB6BBQDCGJewIFwQWAAAgPUILAAAwHoEFgAAYD0CCwAAsB6BBQAAWI/AAgAArEdgAQAA1iOwAAAA6xFYAACA9QgsAADAegQWAABgPQILAIQxw82EECYILAAQxgy3P0SYILAAAADrEVgAAID1CCwAAMB6BBYAAGA9AgsAALAegQUAAFiPwAIAAKxHYAEAANYjsAAAAOt1KLDk5+crKSlJ0dHRSktL0+bNm085ftWqVRo6dKiio6M1cuRIrVmzJmi7MUYLFixQfHy8evToIa/Xqz179nSkNAAAEIZCDiwrVqxQTk6OFi5cqG3btiklJUUZGRk6dOhQq+Pff/99TZ8+Xbfeequ2b9+urKwsZWVlaefOnYExixYt0jPPPKOlS5dq06ZNuuCCC5SRkaHjx493vDMAABA2HMaEdmustLQ0XXnllfrVr34lSWpublZiYqJ+8pOfaP78+S3GT506VfX19XrzzTcD66666iqlpqZq6dKlMsYoISFBd999t+655x5JUm1trdxutwoKCjRt2rTT1uT3++VyuVRbW6uYmJhQ2sE5lDR/dWeXAJx3fvWPl+v/jkro7DKAVoXy+t0tlIkbGxu1detW5ebmBtZFRETI6/WqrKys1X3KysqUk5MTtC4jI0NFRUWSpIqKCvl8Pnm93sB2l8ultLQ0lZWVtRpYGhoa1NDQEHjs9/tDaaPdvm5q1v9bs+uszA0A58Lzf6jQ1k+/6OwyEAa6RTj0r5OGdd7zhzL4yJEjampqktvtDlrvdrv18ccft7qPz+drdbzP5wtsP7murTHflZeXp0ceeSSU0juk2UgvvvfJWX8eADhbyvfXqHx/TWeXgTAQ1S2i6wQWW+Tm5gadtfH7/UpMTDzjzxPhkObecOkZn/d89efD9XprZ+shFMDZwX/DcKZERnTuB4tDCiyxsbGKjIxUdXV10Prq6mp5PJ5W9/F4PKccf/Kf1dXVio+PDxqTmpra6pxOp1NOpzOU0jukW2SE7s0YetafBwAAnFpIcSkqKkqjR49WSUlJYF1zc7NKSkqUnp7e6j7p6elB4yVp7dq1gfHJycnyeDxBY/x+vzZt2tTmnAAA4PwS8ltCOTk5mjVrlsaMGaOxY8dq8eLFqq+vV3Z2tiRp5syZuvjii5WXlydJuuuuu3T99dfrF7/4hSZNmqTCwkJt2bJFzz77rCTJ4XBo3rx5euyxxzR48GAlJyfroYceUkJCgrKyss5cpwAAoMsKObBMnTpVhw8f1oIFC+Tz+ZSamqri4uLARbOVlZWK+Nb7XFdffbVefvllPfjgg3rggQc0ePBgFRUVacSIEYEx9913n+rr63X77berpqZG11xzjYqLixUdHX0GWgQAAF1dyN/DYiO+hwUAgK4nlNdv7iUEAACsR2ABAADWI7AAAADrEVgAAID1CCwAAMB6BBYAAGA9AgsAALAegQUAAFiPwAIAAKwX8lfz2+jkl/X6/f5OrgQAALTXydft9nzpflgElmPHjkmSEhMTO7kSAAAQqmPHjsnlcp1yTFjcS6i5uVkHDx5Ur1695HA4zujcfr9fiYmJ2r9/f9jdpyice5PCu79w7k0K7/7CuTcpvPujtzPPGKNjx44pISEh6MbJrQmLMywRERG65JJLzupzxMTEhN0f6Enh3JsU3v2Fc29SePcXzr1J4d0fvZ1ZpzuzchIX3QIAAOsRWAAAgPUILKfhdDq1cOFCOZ3Ozi7ljAvn3qTw7i+ce5PCu79w7k0K7/7orXOFxUW3AAAgvHGGBQAAWI/AAgAArEdgAQAA1iOwAAAA6xFYTiM/P19JSUmKjo5WWlqaNm/e3Kn1PPzww3I4HEHL0KFDA9uPHz+uuXPn6qKLLtKFF16ov//7v1d1dXXQHJWVlZo0aZJ69uypuLg43Xvvvfr666+DxpSWluqKK66Q0+nUoEGDVFBQ0KKW7/u7Wb9+vSZPnqyEhAQ5HA4VFRUFbTfGaMGCBYqPj1ePHj3k9Xq1Z8+eoDGff/65ZsyYoZiYGPXu3Vu33nqr6urqgsbs2LFD1157raKjo5WYmKhFixa1qGXVqlUaOnSooqOjNXLkSK1ZsybkWkLt75ZbbmlxLCdOnGh9f3l5ebryyivVq1cvxcXFKSsrS7t37w4aY9PfYXtqCbW/cePGtTh2d9xxh/X9LVmyRKNGjQp8OVh6erreeuutkOaysa/29tdVj1trHn/8cTkcDs2bNy+kObtKf60yaFNhYaGJiooyy5YtMx9++KGZPXu26d27t6muru60mhYuXGiGDx9uqqqqAsvhw4cD2++44w6TmJhoSkpKzJYtW8xVV11lrr766sD2r7/+2owYMcJ4vV6zfft2s2bNGhMbG2tyc3MDY/785z+bnj17mpycHPPRRx+ZX/7ylyYyMtIUFxcHxpyJ382aNWvMv/7rv5rXXnvNSDKvv/560PbHH3/cuFwuU1RUZP70pz+Zv/3bvzXJycnmq6++CoyZOHGiSUlJMRs3bjR/+MMfzKBBg8z06dMD22tra43b7TYzZswwO3fuNK+88orp0aOH+c1vfhMY895775nIyEizaNEi89FHH5kHH3zQdO/e3XzwwQch1RJqf7NmzTITJ04MOpaff/550Bgb+8vIyDAvvvii2blzpykvLzd/8zd/Y/r372/q6uoCY2z6OzxdLR3p7/rrrzezZ88OOna1tbXW9/ff//3fZvXq1eZ///d/ze7du80DDzxgunfvbnbu3Nnlj1t7+uuqx+27Nm/ebJKSksyoUaPMXXfd1e45u0p/bSGwnMLYsWPN3LlzA4+bmppMQkKCycvL67SaFi5caFJSUlrdVlNTY7p3725WrVoVWLdr1y4jyZSVlRljvnkRjYiIMD6fLzBmyZIlJiYmxjQ0NBhjjLnvvvvM8OHDg+aeOnWqycjICDw+07+b776gNzc3G4/HY37+858H9ed0Os0rr7xijDHmo48+MpLMH//4x8CYt956yzgcDvPZZ58ZY4z59a9/bfr06RPozRhj7r//fjNkyJDA45tvvtlMmjQpqJ60tDTzL//yL+2uJdT+jPkmsEyZMqXNfbpKf4cOHTKSzLp16wL72vJ32J5aQu3PmG9e+L79QvFdXam/Pn36mOeffz7sjtt3+zMmPI7bsWPHzODBg83atWuD+gnX4/dtvCXUhsbGRm3dulVerzewLiIiQl6vV2VlZZ1YmbRnzx4lJCRo4MCBmjFjhiorKyVJW7du1YkTJ4JqHjp0qPr37x+ouaysTCNHjpTb7Q6MycjIkN/v14cffhgY8+05To45Oce5+N1UVFTI5/MFPYfL5VJaWlpQL71799aYMWMCY7xeryIiIrRp06bAmOuuu05RUVFBvezevVtffPFFu/ptTy0dVVpaqri4OA0ZMkRz5szR0aNHA9u6Sn+1tbWSpL59+0qy6++wPbWE2t9Jv/3tbxUbG6sRI0YoNzdXX375ZWBbV+ivqalJhYWFqq+vV3p6etgdt+/2d1JXP25z587VpEmTWtQQbsevNWFx88Oz4ciRI2pqago6sJLkdrv18ccfd1JVUlpamgoKCjRkyBBVVVXpkUce0bXXXqudO3fK5/MpKipKvXv3DtrH7XbL5/NJknw+X6s9ndx2qjF+v19fffWVvvjii7P+uzlZS2vP8e064+LigrZ369ZNffv2DRqTnJzcYo6T2/r06dNmv9+e43S1dMTEiRP1d3/3d0pOTta+ffv0wAMPKDMzU2VlZYqMjOwS/TU3N2vevHn6wQ9+oBEjRgTms+XvsD21hNqfJP3jP/6jBgwYoISEBO3YsUP333+/du/erddee836/j744AOlp6fr+PHjuvDCC/X6669r2LBhKi8vD4vj1lZ/Utc+bpJUWFiobdu26Y9//GOLbeH0711bCCxdTGZmZuDnUaNGKS0tTQMGDNDKlSvVo0ePTqwMoZo2bVrg55EjR2rUqFG69NJLVVpaqvHjx3diZe03d+5c7dy5Uxs2bOjsUs6Ktvq7/fbbAz+PHDlS8fHxGj9+vPbt26dLL730XJcZkiFDhqi8vFy1tbX6r//6L82aNUvr1q3r7LLOmLb6GzZsWJc+bvv379ddd92ltWvXKjo6urPL6RS8JdSG2NhYRUZGtriqubq6Wh6Pp5Oqaql379667LLLtHfvXnk8HjU2NqqmpiZozLdr9ng8rfZ0ctupxsTExKhHjx7n5Hdzcp5TPYfH49GhQ4eCtn/99df6/PPPz0i/395+ulrOhIEDByo2NlZ79+4NPK/N/d15551688039e677+qSSy4JrLfp77A9tYTaX2vS0tIkKejY2dpfVFSUBg0apNGjRysvL08pKSl6+umnw+a4tdVfa7rScdu6dasOHTqkK664Qt26dVO3bt20bt06PfPMM+rWrZvcbndYHL9TIbC0ISoqSqNHj1ZJSUlgXXNzs0pKSoLeD+1sdXV12rdvn+Lj4zV69Gh17949qObdu3ersrIyUHN6ero++OCDoBfCtWvXKiYmJnDaND09PWiOk2NOznEufjfJycnyeDxBz+H3+7Vp06agXmpqarR169bAmHfeeUfNzc2B/xClp6dr/fr1OnHiRFAvQ4YMUZ8+fdrVb3tqORMOHDigo0ePKj4+3ur+jDG688479frrr+udd95p8ZaUTX+H7akl1P5aU15eLklBx87W/r6rublZDQ0NXf64na6/1nSl4zZ+/Hh98MEHKi8vDyxjxozRjBkzAj+H4/EL0uHLdc8DhYWFxul0moKCAvPRRx+Z22+/3fTu3TvoCutz7e677zalpaWmoqLCvPfee8br9ZrY2Fhz6NAhY8w3HyXr37+/eeedd8yWLVtMenq6SU9PD+x/8mNtEyZMMOXl5aa4uNj069ev1Y+13XvvvWbXrl0mPz+/1Y+1fd/fzbFjx8z27dvN9u3bjSTz1FNPme3bt5tPP/3UGPPNR2179+5t3njjDbNjxw4zZcqUVj/WfPnll5tNmzaZDRs2mMGDBwd97Lempsa43W7zox/9yOzcudMUFhaanj17tvjYb7du3cyTTz5pdu3aZRYuXNjqx35PV0so/R07dszcc889pqyszFRUVJjf//735oorrjCDBw82x48ft7q/OXPmGJfLZUpLS4M+Hvrll18Gxtj0d3i6WkLtb+/eveZnP/uZ2bJli6moqDBvvPGGGThwoLnuuuus72/+/Plm3bp1pqKiwuzYscPMnz/fOBwO8/bbb3f543a6/rrycWvLdz/11NWP3+kQWE7jl7/8penfv7+JiooyY8eONRs3buzUeqZOnWri4+NNVFSUufjii83UqVPN3r17A9u/+uor8+Mf/9j06dPH9OzZ0/zwhz80VVVVQXN88sknJjMz0/To0cPExsaau+++25w4cSJozLvvvmtSU1NNVFSUGThwoHnxxRdb1PJ9fzfvvvuukdRimTVrljHmm4/bPvTQQ8btdhun02nGjx9vdu/eHTTH0aNHzfTp082FF15oYmJiTHZ2tjl27FjQmD/96U/mmmuuMU6n01x88cXm8ccfb1HLypUrzWWXXWaioqLM8OHDzerVq4O2t6eWUPr78ssvzYQJE0y/fv1M9+7dzYABA8zs2bNbBD4b+2utJ0lBfyM2/R22p5ZQ+qusrDTXXXed6du3r3E6nWbQoEHm3nvvDfo+D1v7++d//mczYMAAExUVZfr162fGjx8fCCvtncvGvtrTX1c+bm35bmDp6sfvdBzGGNPx8zMAAABnH9ewAAAA6xFYAACA9QgsAADAegQWAABgPQILAACwHoEFAABYj8ACAACsR2ABAADWI7AAAADrEVgAAID1CCwAAMB6BBYAAGC9/w+ZJlr0SZKjLwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data[data['kps']=='frontend']['message'].apply(lambda x: json.loads(x)['severity']).apply(lambda x: 2 if x == 'error' else 0).plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "c705816c-a1d8-4a78-b376-1a648081addd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'{\"currency\":\"EUR\",\"http.req.id\":\"a0df7041-549c-4bc8-935a-2c4ba639bea4\",\"http.req.method\":\"GET\",\"http.req.path\":\"/\",\"message\":\"home\",\"session\":\"e6199e12-0241-46bf-9620-77e0b6006785\",\"severity\":\"info\",\"timestamp\":\"2025-05-02T06:00:01.991073475Z\"}'"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['message'][21]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d809a247-b132-4108-8840-d0973a3002d3",
   "metadata": {},
   "source": [
    "# paymentservice"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "a80a8270-7e0e-40d1-b747-e9c5c53944f8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'severity': 'info',\n",
       " 'time': 1746165625592,\n",
       " 'message': 'PaymentService#Charge invoked with request {\"amount\":{\"currency_code\":\"JPY\",\"units\":\"22448\",\"nanos\":997788598},\"credit_card\":{\"credit_card_number\":\"4432-8015-6152-0454\",\"credit_card_cvv\":672,\"credit_card_expiration_year\":2039,\"credit_card_expiration_month\":1}}',\n",
       " 'pid': 1,\n",
       " 'hostname': 'paymentservice-2',\n",
       " 'name': 'paymentservice-server',\n",
       " 'v': 1}"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "['message'].apply(lambda x: json.loads(x))[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "cbd5347c-4291-46d1-8c99-0461d2a5b83f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    info\n",
       "Name: message, dtype: object"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[data['kps']=='paymentservice']['message'].apply(lambda x: json.loads(x)['severity']).drop_duplicates()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8f417918-520a-4da4-9c4b-bf80b07583b2",
   "metadata": {},
   "source": [
    "# recommendationservice"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "06b6d182-60e7-4ef3-82f8-cf6066fab3d9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "14        {'timestamp': 1746165629.8268626, 'severity': ...\n",
       "73        {'timestamp': 1746165603.779355, 'severity': '...\n",
       "76        {'timestamp': 1746165603.7154498, 'severity': ...\n",
       "131       {'timestamp': 1746165603.0440116, 'severity': ...\n",
       "137       {'timestamp': 1746165603.1584456, 'severity': ...\n",
       "                                ...                        \n",
       "406754    {'timestamp': 1746169198.7326052, 'severity': ...\n",
       "406783    {'timestamp': 1746169199.4333262, 'severity': ...\n",
       "406789    {'timestamp': 1746169199.6041455, 'severity': ...\n",
       "406799    {'timestamp': 1746169199.293473, 'severity': '...\n",
       "406803    {'timestamp': 1746169199.0099456, 'severity': ...\n",
       "Name: message, Length: 7801, dtype: object"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "['message'].apply(lambda x: json.loads(x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "5d4d0059-9fba-4771-8e7b-facdee5c415a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "14    INFO\n",
       "Name: message, dtype: object"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[data['kps']=='recommendationservice']['message'].apply(lambda x: json.loads(x)['severity']).drop_duplicates()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "39a79d7b-b624-4cfb-b3bb-440cbd66aba6",
   "metadata": {},
   "source": [
    "# k8s node"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "4bf8d5b3-a83f-4ee6-b5f7-6c53be5b9cb2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     aiops-k8s-01\n",
       "13    aiops-k8s-03\n",
       "17    aiops-k8s-04\n",
       "8     aiops-k8s-05\n",
       "82    aiops-k8s-06\n",
       "4     aiops-k8s-07\n",
       "1     aiops-k8s-08\n",
       "Name: k8_node_name, dtype: object"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['k8_node_name'].drop_duplicates().sort_values()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "d2398199-0bfb-4c09-b6b5-8edb8fcb292b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>k8_pod</th>\n",
       "      <th>k8_node_name</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>paymentservice-2</td>\n",
       "      <td>aiops-k8s-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>768</th>\n",
       "      <td>cartservice-1</td>\n",
       "      <td>aiops-k8s-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>316</th>\n",
       "      <td>emailservice-2</td>\n",
       "      <td>aiops-k8s-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>147</th>\n",
       "      <td>shippingservice-0</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>134</th>\n",
       "      <td>paymentservice-0</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74</th>\n",
       "      <td>cartservice-0</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1074</th>\n",
       "      <td>currencyservice-0</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>recommendationservice-0</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>frontend-1</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>checkoutservice-2</td>\n",
       "      <td>aiops-k8s-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>cartservice-2</td>\n",
       "      <td>aiops-k8s-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>frontend-2</td>\n",
       "      <td>aiops-k8s-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82</th>\n",
       "      <td>example-ant-29101920-tjkf5</td>\n",
       "      <td>aiops-k8s-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>964</th>\n",
       "      <td>emailservice-1</td>\n",
       "      <td>aiops-k8s-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>159</th>\n",
       "      <td>example-ant-10-29101920-fl582</td>\n",
       "      <td>aiops-k8s-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>86</th>\n",
       "      <td>currencyservice-2</td>\n",
       "      <td>aiops-k8s-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>frontend-0</td>\n",
       "      <td>aiops-k8s-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>checkoutservice-0</td>\n",
       "      <td>aiops-k8s-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>257577</th>\n",
       "      <td>recommendationservice-1</td>\n",
       "      <td>aiops-k8s-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2755</th>\n",
       "      <td>emailservice-0</td>\n",
       "      <td>aiops-k8s-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>306</th>\n",
       "      <td>shippingservice-2</td>\n",
       "      <td>aiops-k8s-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>currencyservice-1</td>\n",
       "      <td>aiops-k8s-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22586</th>\n",
       "      <td>redis-cart-0</td>\n",
       "      <td>aiops-k8s-08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>shippingservice-1</td>\n",
       "      <td>aiops-k8s-08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>adservice-0</td>\n",
       "      <td>aiops-k8s-08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>107</th>\n",
       "      <td>paymentservice-1</td>\n",
       "      <td>aiops-k8s-08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>258162</th>\n",
       "      <td>recommendationservice-2</td>\n",
       "      <td>aiops-k8s-08</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                               k8_pod  k8_node_name\n",
       "0                    paymentservice-2  aiops-k8s-01\n",
       "768                     cartservice-1  aiops-k8s-01\n",
       "316                    emailservice-2  aiops-k8s-01\n",
       "147                 shippingservice-0  aiops-k8s-03\n",
       "134                  paymentservice-0  aiops-k8s-03\n",
       "74                      cartservice-0  aiops-k8s-03\n",
       "1074                currencyservice-0  aiops-k8s-03\n",
       "14            recommendationservice-0  aiops-k8s-03\n",
       "13                         frontend-1  aiops-k8s-03\n",
       "96                  checkoutservice-2  aiops-k8s-04\n",
       "17                      cartservice-2  aiops-k8s-04\n",
       "8                          frontend-2  aiops-k8s-05\n",
       "82         example-ant-29101920-tjkf5  aiops-k8s-06\n",
       "964                    emailservice-1  aiops-k8s-06\n",
       "159     example-ant-10-29101920-fl582  aiops-k8s-06\n",
       "86                  currencyservice-2  aiops-k8s-06\n",
       "18                         frontend-0  aiops-k8s-07\n",
       "33                  checkoutservice-0  aiops-k8s-07\n",
       "257577        recommendationservice-1  aiops-k8s-07\n",
       "2755                   emailservice-0  aiops-k8s-07\n",
       "306                 shippingservice-2  aiops-k8s-07\n",
       "4                   currencyservice-1  aiops-k8s-07\n",
       "22586                    redis-cart-0  aiops-k8s-08\n",
       "106                 shippingservice-1  aiops-k8s-08\n",
       "1                         adservice-0  aiops-k8s-08\n",
       "107                  paymentservice-1  aiops-k8s-08\n",
       "258162        recommendationservice-2  aiops-k8s-08"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[['k8_pod','k8_node_name']].drop_duplicates().sort_values(by='k8_node_name')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "fe90023e-3494-4d51-a1ff-1f9d979b9c2d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0               paymentservice\n",
       "1                    adservice\n",
       "4              currencyservice\n",
       "8                     frontend\n",
       "14       recommendationservice\n",
       "17                 cartservice\n",
       "33             checkoutservice\n",
       "82                     example\n",
       "106            shippingservice\n",
       "316               emailservice\n",
       "22586                    redis\n",
       "Name: k8_pod, dtype: object"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['k8_pod'].apply(lambda x: x.split('-')[0]).drop_duplicates()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4865b349-0370-4f64-9ede-62a308773fe0",
   "metadata": {},
   "source": [
    "# 调用关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 321,
   "id": "b3154b2f-2989-494e-ac55-ca60ed967537",
   "metadata": {},
   "outputs": [],
   "source": [
    "case = 'case1/'\n",
    "logname = 'trace_jaeger-span_2025-04-28_03-59-00.parquet'\n",
    "data = load_in_file(base_path + case + logs[2] + logname )\n",
    "data['timestamp'] = data['startTime'].apply(lambda x:x//1000000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 322,
   "id": "dfc1586d-5cd7-410e-a890-7e39c9ddcf70",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>traceID</th>\n",
       "      <th>spanID</th>\n",
       "      <th>flags</th>\n",
       "      <th>operationName</th>\n",
       "      <th>references</th>\n",
       "      <th>startTime</th>\n",
       "      <th>startTimeMillis</th>\n",
       "      <th>duration</th>\n",
       "      <th>tags</th>\n",
       "      <th>logs</th>\n",
       "      <th>process</th>\n",
       "      <th>timestamp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>118671</th>\n",
       "      <td>c0d070d3997c27263cc4437c097270c1</td>\n",
       "      <td>0fe7e708a230a7ec</td>\n",
       "      <td>1.0</td>\n",
       "      <td>hipstershop.CurrencyService/Convert</td>\n",
       "      <td>[{'refType': 'CHILD_OF', 'spanID': 'e5c57c9492...</td>\n",
       "      <td>1745697574428658</td>\n",
       "      <td>1745697574428</td>\n",
       "      <td>4248</td>\n",
       "      <td>[{'key': 'rpc.system', 'type': 'string', 'valu...</td>\n",
       "      <td>[{'fields': [{'key': 'message.type', 'type': '...</td>\n",
       "      <td>{'serviceName': 'frontend', 'tags': [{'key': '...</td>\n",
       "      <td>1745697574</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                 traceID            spanID  flags  \\\n",
       "118671  c0d070d3997c27263cc4437c097270c1  0fe7e708a230a7ec    1.0   \n",
       "\n",
       "                              operationName  \\\n",
       "118671  hipstershop.CurrencyService/Convert   \n",
       "\n",
       "                                               references         startTime  \\\n",
       "118671  [{'refType': 'CHILD_OF', 'spanID': 'e5c57c9492...  1745697574428658   \n",
       "\n",
       "        startTimeMillis  duration  \\\n",
       "118671    1745697574428      4248   \n",
       "\n",
       "                                                     tags  \\\n",
       "118671  [{'key': 'rpc.system', 'type': 'string', 'valu...   \n",
       "\n",
       "                                                     logs  \\\n",
       "118671  [{'fields': [{'key': 'message.type', 'type': '...   \n",
       "\n",
       "                                                  process   timestamp  \n",
       "118671  {'serviceName': 'frontend', 'tags': [{'key': '...  1745697574  "
      ]
     },
     "execution_count": 322,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.tail(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 323,
   "id": "a5fa6d67-79d5-4818-b797-d1e0cbb5871c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2025, 4, 27, 3, 59, 34)"
      ]
     },
     "execution_count": 323,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "datetime.datetime.fromtimestamp(1745697574)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 324,
   "id": "d1a67e14-2c89-4548-8073-0173d5e8397e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'serviceName': 'frontend',\n",
       " 'tags': array([{'key': 'exporter', 'type': 'string', 'value': 'jaeger'},\n",
       "        {'key': 'ip', 'type': 'string', 'value': '10.233.74.117'},\n",
       "        {'key': 'name', 'type': 'string', 'value': 'frontend-2'},\n",
       "        {'key': 'node_name', 'type': 'string', 'value': 'aiops-k8s-05'},\n",
       "        {'key': 'namespace', 'type': 'string', 'value': 'hipstershop'}],\n",
       "       dtype=object)}"
      ]
     },
     "execution_count": 324,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['process'][0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 325,
   "id": "68252a00-f367-46b4-a0d9-93d774fa5c4d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([{'fields': array([{'key': 'message.type', 'type': 'string', 'value': 'SENT'},\n",
       "              {'key': 'message.id', 'type': 'int64', 'value': '1'},\n",
       "              {'key': 'message.uncompressed_size', 'type': 'int64', 'value': '12'},\n",
       "              {'key': 'name', 'type': 'string', 'value': 'message'}],\n",
       "             dtype=object), 'timestamp': 1746039600188257}                          ,\n",
       "       {'fields': array([{'key': 'message.type', 'type': 'string', 'value': 'RECEIVED'},\n",
       "              {'key': 'message.id', 'type': 'int64', 'value': '1'},\n",
       "              {'key': 'message.uncompressed_size', 'type': 'int64', 'value': '129'},\n",
       "              {'key': 'name', 'type': 'string', 'value': 'message'}],\n",
       "             dtype=object), 'timestamp': 1746039600198046}                              ],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 325,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['logs'][0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 326,
   "id": "84464c48-c50f-46b4-9dcc-e8e33a011866",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([{'refType': 'CHILD_OF', 'spanID': '3ccfa3847d9a9da5', 'traceID': '286c3688e95ba5e350d4d28cc072c1a7'}],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 326,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['references'][0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 327,
   "id": "a9d332a8-689e-4e3c-89b2-2a3faddac829",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([{'key': 'rpc.system', 'type': 'string', 'value': 'grpc'},\n",
       "       {'key': 'rpc.service', 'type': 'string', 'value': 'hipstershop.ProductCatalogService'},\n",
       "       {'key': 'rpc.method', 'type': 'string', 'value': 'GetProduct'},\n",
       "       {'key': 'net.peer.ip', 'type': 'string', 'value': 'productcatalogservice'},\n",
       "       {'key': 'net.peer.port', 'type': 'string', 'value': '3550'},\n",
       "       {'key': 'instrumentation.name', 'type': 'string', 'value': 'go.opentelemetry.io/otel/sdk/tracer'},\n",
       "       {'key': 'status.code', 'type': 'int64', 'value': '0'},\n",
       "       {'key': 'status.message', 'type': 'string', 'value': ''},\n",
       "       {'key': 'span.kind', 'type': 'string', 'value': 'client'},\n",
       "       {'key': 'internal.span.format', 'type': 'string', 'value': 'jaeger'}],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 327,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['tags'][0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 328,
   "id": "05c46ece-1b6c-4125-9d5d-10f94a9a4f6f",
   "metadata": {},
   "outputs": [],
   "source": [
    "processtrace(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 329,
   "id": "a0120678-f012-4fab-909a-22b98bdc4d25",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>timestamp</th>\n",
       "      <th>servicename</th>\n",
       "      <th>name</th>\n",
       "      <th>node_name</th>\n",
       "      <th>peer_ip</th>\n",
       "      <th>peer_method</th>\n",
       "      <th>code</th>\n",
       "      <th>message</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1745694000</td>\n",
       "      <td>frontend</td>\n",
       "      <td>frontend-2</td>\n",
       "      <td>aiops-k8s-05</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>GetProduct</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1745694000</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>productcatalogservice-2</td>\n",
       "      <td>aiops-k8s-04</td>\n",
       "      <td>10.233.74.117</td>\n",
       "      <td>GetProduct</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1745694000</td>\n",
       "      <td>frontend</td>\n",
       "      <td>frontend-1</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>currencyservice</td>\n",
       "      <td>GetSupportedCurrencies</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1745694000</td>\n",
       "      <td>frontend</td>\n",
       "      <td>frontend-1</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>GetProduct</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1745694000</td>\n",
       "      <td>frontend</td>\n",
       "      <td>frontend-1</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>currencyservice</td>\n",
       "      <td>Convert</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>118659</th>\n",
       "      <td>1745697572</td>\n",
       "      <td>frontend</td>\n",
       "      <td>frontend-1</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>currencyservice</td>\n",
       "      <td>GetSupportedCurrencies</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>118660</th>\n",
       "      <td>1745697572</td>\n",
       "      <td>frontend</td>\n",
       "      <td>frontend-1</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>ListProducts</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>118665</th>\n",
       "      <td>1745697572</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>productcatalogservice-2</td>\n",
       "      <td>aiops-k8s-04</td>\n",
       "      <td>10.233.81.88</td>\n",
       "      <td>ListProducts</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>118668</th>\n",
       "      <td>1745697573</td>\n",
       "      <td>frontend</td>\n",
       "      <td>frontend-2</td>\n",
       "      <td>aiops-k8s-05</td>\n",
       "      <td>cartservice</td>\n",
       "      <td>GetCart</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>118669</th>\n",
       "      <td>1745697574</td>\n",
       "      <td>frontend</td>\n",
       "      <td>frontend-1</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>productcatalogservice</td>\n",
       "      <td>ListProducts</td>\n",
       "      <td>0</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>53624 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         timestamp            servicename                     name  \\\n",
       "0       1745694000               frontend               frontend-2   \n",
       "1       1745694000  productcatalogservice  productcatalogservice-2   \n",
       "3       1745694000               frontend               frontend-1   \n",
       "4       1745694000               frontend               frontend-1   \n",
       "6       1745694000               frontend               frontend-1   \n",
       "...            ...                    ...                      ...   \n",
       "118659  1745697572               frontend               frontend-1   \n",
       "118660  1745697572               frontend               frontend-1   \n",
       "118665  1745697572  productcatalogservice  productcatalogservice-2   \n",
       "118668  1745697573               frontend               frontend-2   \n",
       "118669  1745697574               frontend               frontend-1   \n",
       "\n",
       "           node_name                peer_ip             peer_method code  \\\n",
       "0       aiops-k8s-05  productcatalogservice              GetProduct    0   \n",
       "1       aiops-k8s-04          10.233.74.117              GetProduct    0   \n",
       "3       aiops-k8s-03        currencyservice  GetSupportedCurrencies    0   \n",
       "4       aiops-k8s-03  productcatalogservice              GetProduct    0   \n",
       "6       aiops-k8s-03        currencyservice                 Convert    0   \n",
       "...              ...                    ...                     ...  ...   \n",
       "118659  aiops-k8s-03        currencyservice  GetSupportedCurrencies    0   \n",
       "118660  aiops-k8s-03  productcatalogservice            ListProducts    0   \n",
       "118665  aiops-k8s-04           10.233.81.88            ListProducts    0   \n",
       "118668  aiops-k8s-05            cartservice                 GetCart    0   \n",
       "118669  aiops-k8s-03  productcatalogservice            ListProducts    0   \n",
       "\n",
       "       message  \n",
       "0               \n",
       "1               \n",
       "3               \n",
       "4               \n",
       "6               \n",
       "...        ...  \n",
       "118659          \n",
       "118660          \n",
       "118665          \n",
       "118668          \n",
       "118669          \n",
       "\n",
       "[53624 rows x 8 columns]"
      ]
     },
     "execution_count": 329,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[['timestamp','servicename','name','node_name','peer_ip','peer_method','code','message']].drop_duplicates()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d570c9f3-1e3f-4485-94e0-c576ec3783bd",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 331,
   "id": "390fd52a-d091-4db8-b16c-7f17c0daed05",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>peer_ip</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>peer_method</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>AddItem</th>\n",
       "      <td>cartservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Charge</th>\n",
       "      <td>paymentservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Convert</th>\n",
       "      <td>currencyservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>EmptyCart</th>\n",
       "      <td>cartservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GetAds</th>\n",
       "      <td>adservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GetCart</th>\n",
       "      <td>cartservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GetProduct</th>\n",
       "      <td>productcatalogservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GetQuote</th>\n",
       "      <td>shippingservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GetSupportedCurrencies</th>\n",
       "      <td>currencyservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ListProducts</th>\n",
       "      <td>productcatalogservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ListRecommendations</th>\n",
       "      <td>recommendationservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PlaceOrder</th>\n",
       "      <td>checkoutservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SendOrderConfirmation</th>\n",
       "      <td>emailservice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ShipOrder</th>\n",
       "      <td>shippingservice</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                      peer_ip\n",
       "peer_method                                  \n",
       "AddItem                           cartservice\n",
       "Charge                         paymentservice\n",
       "Convert                       currencyservice\n",
       "EmptyCart                         cartservice\n",
       "GetAds                              adservice\n",
       "GetCart                           cartservice\n",
       "GetProduct              productcatalogservice\n",
       "GetQuote                      shippingservice\n",
       "GetSupportedCurrencies        currencyservice\n",
       "ListProducts            productcatalogservice\n",
       "ListRecommendations     recommendationservice\n",
       "PlaceOrder                    checkoutservice\n",
       "SendOrderConfirmation            emailservice\n",
       "ShipOrder                     shippingservice"
      ]
     },
     "execution_count": 331,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[['peer_method','peer_ip']].groupby('peer_method').max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "e162d2d1-a0be-46ed-950c-5c26fdf63f41",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'connection error: desc = \"transport: Error while dialing dial tcp 10.233.7.249:9555: connect: connection refused\"'"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['message'][20262]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "32931644-9d9a-4b3b-9e9c-4bd81985baaf",
   "metadata": {},
   "source": [
    "# metric"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cffeee83-fac0-4fdc-b030-a20960abbce4",
   "metadata": {},
   "source": [
    "## apm - all"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "d44e1d1c-cbfc-4e4c-a978-f8dd1db8a3b8",
   "metadata": {},
   "outputs": [],
   "source": [
    "date = '2025-06-08'\n",
    "data = load_in_file(f'/app/jupyter/aiops/phaseone/{date}/metric-parquet/apm/pod_ns_hipstershop_{date}.parquet')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "6a949144-6bbb-4986-b89f-6ecefe684150",
   "metadata": {},
   "outputs": [],
   "source": [
    "data['timestamp'] = data['time'].apply(lambda x: transtime(x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "8f189026-220d-466d-9686-b6768dfd45dc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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/PnzGDt2LCZOnAjNtcs7V93OGf/617/wxBNPWDw2adIk5f9JSUnYunUrvvzySzz00EOoV68eQkNDYTAYEBcXZ/N5P/jgA6fKTETkT6rWb7/cuBemXlyn3Ney5kOVwA8fwWHlNRC+2reTTpw4gaKiomrBorS0FKmpqcr9zp07V9u2U6dOFvePHDmC7t27Q6o0816PHj1QUFCAs2fPIjEx0ep2zrC2//fffx+ffvopMjMzUVxcjNLSUtx0000uPa+zZSYi8meP3PUepi5MUe5zng91Aj98SJJLTR++UlBQAABYsWJFtSvG6vV6nDx5EgAQHl79WKw95gw121XdZsmSJXjppZcwY8YMdO/eHREREXjrrbewfft2VWUiIgpUs1sOUv4dfmwhAEDDGU5VCfzwESDatm0LvV6PzMxM9OzZs9pyc/hwRps2bfDNN99ACKHUJGzevBkRERFo1qyZx8psft6bb74Zzz//vM2y6nQ6mEwmvykzEZGnmJtd3m/9NG7r9gIAQCNVNBNLbDJWha+al0REROCll17Ciy++iIULF+LkyZPYs2cP3nvvPSxcuNCl53r++eeRlZWFf//73/j999/x3Xff4dVXX8XIkSM93nciOTkZu3btwqpVq3Ds2DFMmDABO3futFinRYsWOHDgAI4ePYrLly9bHaLrzTITEXla5cBRmXBx1COVY82HF02ZMgUNGzZEeno6Tp06hejoaHTs2BH/+c9/IMuOLtxcoWnTpvjpp58wevRodOjQATExMXjqqafwyiuveLzMzzzzDPbu3YuHH34YkiRhwIABeP755/Hzzz8r6wwePBjr1q1D586dUVBQgLVr16JFixY+KzMRUU0S1bqhkqsk4WexLT8/H1FRUcjLy0NkZKTFspKSEmRkZCApKQkhISE+KiGRa/i+JQpcD82/CUc0JsxtMwS3dP03AGDdthn499EFAICP2j2Hmzs/b+cZ6g575++qWN9NRETkgg4t+/u6CAHP5fCxYcMG3HvvvYiPj4ckSVi+fLnNdZ999llIkoSZM2e6UUTyhEWLFqFevXpWb+3atfN18YiI/FrlaQLqx1yPONO1RgMHM6CSdS73+SgsLESHDh3w5JNP4oEHHrC53rJly7Bt2zbEx/to9lGycN9996Fbt25WlwUHc5IcIiJXREtaZMP+KD+yzeXw0bdvX/Tt29fuOufO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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data[['client_error_ratio','error_ratio','server_error_ratio']].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "aba8ef12-8613-4513-b6a3-c033b80267d6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data[['request','response']].plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8f3fc174-667c-4325-b15b-942cb6bfa6f2",
   "metadata": {},
   "source": [
    "## apm - pod"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "a8d53e6f-50e2-4115-992f-e048d6421388",
   "metadata": {},
   "outputs": [],
   "source": [
    "apms = [\n",
    "\"adservice-0\",\n",
    "\"adservice-1\",\n",
    "\"adservice-2\",\n",
    "\"cartservice-0\",\n",
    "\"cartservice-1\",\n",
    "\"cartservice-2\",\n",
    "\"checkoutservice-0\",\n",
    "\"checkoutservice-1\",\n",
    "\"checkoutservice-2\",\n",
    "\"currencyservice-0\",\n",
    "\"currencyservice-1\",\n",
    "\"currencyservice-2\",\n",
    "\"emailservice-0\",\n",
    "\"emailservice-1\",\n",
    "\"emailservice-2\",\n",
    "\"frontend-0\",\n",
    "\"frontend-1\",\n",
    "\"frontend-2\",\n",
    "\"paymentservice-0\",\n",
    "\"paymentservice-1\",\n",
    "\"paymentservice-2\",\n",
    "\"productcatalogservice-0\",\n",
    "\"productcatalogservice-1\",\n",
    "\"productcatalogservice-2\",\n",
    "\"recommendationservice-0\",\n",
    "\"recommendationservice-1\",\n",
    "\"recommendationservice-2\",\n",
    "\"redis-cart-0\",\n",
    "\"redis-cart-1\",\n",
    "\"redis-cart-2\",\n",
    "\"shippingservice-0\",\n",
    "\"shippingservice-1\",\n",
    "\"shippingservice-2\",\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "59fcc7dd-e4e4-4224-a056-499c380db835",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['time', 'client_error', 'client_error_ratio', 'error', 'error_ratio',\n",
       "       'object_id', 'object_type', 'request', 'response', 'rrt', 'rrt_max',\n",
       "       'server_error', 'server_error_ratio', 'timeout', 'timestamp'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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sHmOiMj1GDQRERERacCgicgHsHmOiMj1GDQRERERacCgiYiIiEgDBk1EREREGjBoIiIiItKAQRORDzCAmeBERK7GoInIBwhwoCYiIldj0ERERESkAYMmIh/A5jkiItdj0ERERESkAYMmIiIiIg0YNBGRVyssKsalnDxPF4OIygEGTUTk1R6etxXt3liDgxcyPV0UIvJxDJqIyKsln7kKAPhh5zkPl4SIfB2DJiIiIiINGDQRERERacCgicgHGDhMExGRyzFoIvIBgrOoEBG5HIMmIiIiIg0YNBH5ADbPERG5HoMmIiIiIg0YNBERERFpwKCJiIiISAMGTUREREQaMGgiIiIi0oBBExEREZEGDJqIiIiINGDQRERERKQBgyYiIiIiDRg0EREREWnAoImIiIhIAwZNRERERBowaCIiIiLSgEETERERkQYMmoiIiIg0YNBE5AMMBoOni0BE5PMYNBH5ACGEp4tAROTzGDQRERERacCgicgHsHmOiMj1GDQRERERacCgiYiIiEgDBk1EREREGjBoIiIiItKAQRMRERGRBgyaiIiIiDRg0ERERESkAYMmIh/AUZqIiFxP10FTUVERXn31VdSpUwchISGoW7cupk+fLpsyQgiBKVOmoFq1aggJCUFiYiKOHz8u286VK1cwePBghIeHIzIyEsOHD0dOTo5snX379uGOO+5AcHAw4uPjMWvWLLe8R0dkXi/Ak1/uwP/2X/R0UUgnOIkKEZHr6Tpoevvtt/Hpp5/ik08+weHDh/H2229j1qxZ+Pjjj83rzJo1Cx999BHmzp2Lbdu2oUKFCkhKSkJubq55ncGDB+PgwYNYvXo1li9fjk2bNmHkyJHm5VlZWejduzdq1aqF5ORkvPPOO5g6dSrmzZvn1ver1Xurj2LN4XQ8vXiXp4tCRERUbgR4ugDWbN68Gffddx/69esHAKhduza+/fZbbN++HUBJLdMHH3yAV155Bffddx8A4KuvvkJMTAyWLl2KgQMH4vDhw1i5ciV27NiBdu3aAQA+/vhj3HXXXXj33XcRFxeHxYsXIz8/HwsWLIDRaETTpk2xZ88evPfee7LgSiovLw95eXnmx1lZWa48FDKXruW7bV/kHdg8R0TkerquaerUqRPWrl2LY8eOAQD27t2LP//8E3379gUAnDp1CqmpqUhMTDS/JiIiAh06dMCWLVsAAFu2bEFkZKQ5YAKAxMRE+Pn5Ydu2beZ1unbtCqPRaF4nKSkJR48exdWrVxXLNnPmTERERJj/xcfHO/fNExERka7ouqbppZdeQlZWFho1agR/f38UFRVhxowZGDx4MAAgNTUVABATEyN7XUxMjHlZamoqoqOjZcsDAgIQFRUlW6dOnTqltmFaVqlSpVJlmzx5MiZOnGh+nJWVxcCJiIjIh+k6aFqyZAkWL16Mb775xtxkNn78eMTFxWHo0KEeLVtQUBCCgoI8WgYiIiJyH10HTZMmTcJLL72EgQMHAgCaN2+OM2fOYObMmRg6dChiY2MBAGlpaahWrZr5dWlpaWjVqhUAIDY2Funp6bLtFhYW4sqVK+bXx8bGIi0tTbaO6bFpHSIiIirfdJ3TdP36dfj5yYvo7++P4uJiAECdOnUQGxuLtWvXmpdnZWVh27ZtSEhIAAAkJCQgIyMDycnJ5nXWrVuH4uJidOjQwbzOpk2bUFBQYF5n9erVaNiwoWLTHJHeGJgJTkTkcroOmu655x7MmDEDK1aswOnTp/Hzzz/jvffew/333w8AMBgMGD9+PN544w0sW7YM+/fvx5AhQxAXF4f+/fsDABo3bow+ffpgxIgR2L59O/766y+MGTMGAwcORFxcHABg0KBBMBqNGD58OA4ePIjvv/8eH374oSxnSVc4KA9ZEPxMEBG5nK6b5z7++GO8+uqreOaZZ5Ceno64uDg89dRTmDJlinmdF154AdeuXcPIkSORkZGBLl26YOXKlQgODjavs3jxYowZMwY9e/aEn58fBgwYgI8++si8PCIiAqtWrcLo0aPRtm1bVKlSBVOmTFEdboCIiIjKH10HTRUrVsQHH3yADz74QHUdg8GAadOmYdq0aarrREVF4ZtvvrG6rxYtWuCPP/5wtKjuxaYYssDmOSIi19N18xwRacPmOSIi12PQRERERKQBgyZvxFoFssDmOSIi12PQRERERKQBgyZvxFoFIiIit2PQ5I3YPEdEROR2DJqIiIiINGDQ5I3YPEcWmAhOROR6DJqIfADHaSIicj0GTUREREQaMGjyRqxVIAtsniMicj0GTUREpHtZuQX4bf9F5BYUebooVI4xaPJGrFUgonLm6a+T8cziXZi67KCni0LlGIMmb8TmOSIqZ/46cRkA8N2Osx4uCZVnDJqIiIiINGDQRERERKQBgyYiIiIiDRg0eSMmghMREbkdgyZvxERwsmBgJE1E5HIMmoh8gGAkTUTkcgyaiIhI9wL9WZtKnsegicgHsHmOfJ3Rn7cr8jx+ComISPeMAbxdkefxU0hERLoXyJom0gF+ComISPf8DGyCJs9j0ERERLrHmIn0gEETkQ/gDYV8HWuaSA8YNBH5AMFhmsjH+fFuRTrAjyEREekeh9UgPWDQROQD2HJBvs6Pn3HSAQZNRD6AzXPk6wz8ZUA6wKCJiIh0jzET6QGDJiIfwBsK+Tr2niM9YNBERES6x5wm0gMGTUREpHvsPUd6wKCJiIh0j61zpAcMmoiISPeY00R6wKCJyAfwdkK+jiOCkx7wY0jkAzhME/k61jSRHjBoIiIi3WPIRHrAoInIB/CGQr6OI4KTHjBoIiIi3eM4TaQHDJqIiEj3mNNEesCgiYiIdI8xE+kBgyYiItI95jSRHjBoIiIi3WNOE+kBgyYiItI9aU6TEByZjDyDQRMREemePGjyYEGoXGPQROQLmO9BPk76ES9m1EQewqCJyBfwJkI+TpoIXsyPO3kIgyYiItI9aV0qa5rIUxg0EfkCNs+Rj/Nj8xzpAIMmIiLSPT82z5EOMGgiIiLdk+c0MWoiz2DQREREuidtgRbFnisHlW8MmqiUPWczcPfHf2DrycueLgoREQDmNJE+MGiiUh6ZtxUHzmdh4Lytni6KLgkhkJ1b4OliyDANnHydQfIpL2LQRB7CoIlKuVFQ5Oki6Nq47/ag+dRV2H8u09NFMeMthMoT1jSRpzBo8kKCt0iP+nXvBQDAF3+e9HBJiMonxkzkKQyaiHwAm+fI10l/LLKmiTyFQZMXMvAWSRZ4C6HyhOM0kacwaCIiIt2TVi4VM2oiD2HQROQDWPdI5Qmb58hTGDQREZHuScMkVjSRpzBoIiIir8KaJvIU3QdN58+fx6OPPorKlSsjJCQEzZs3x86dO83LhRCYMmUKqlWrhpCQECQmJuL48eOybVy5cgWDBw9GeHg4IiMjMXz4cOTk5MjW2bdvH+644w4EBwcjPj4es2bNcsv7IyIi+wgGTeQhug6arl69is6dOyMwMBD/+9//cOjQIcyePRuVKlUyrzNr1ix89NFHmDt3LrZt24YKFSogKSkJubm55nUGDx6MgwcPYvXq1Vi+fDk2bdqEkSNHmpdnZWWhd+/eqFWrFpKTk/HOO+9g6tSpmDdvnlvfr1Ycp0kfmEdE5D7SOKmIc8+RhwR4ugDWvP3224iPj8fChQvNz9WpU8f8txACH3zwAV555RXcd999AICvvvoKMTExWLp0KQYOHIjDhw9j5cqV2LFjB9q1awcA+Pjjj3HXXXfh3XffRVxcHBYvXoz8/HwsWLAARqMRTZs2xZ49e/Dee+/JgisivTIwgqNyhM1z5Cm6rmlatmwZ2rVrh4ceegjR0dFo3bo1Pv/8c/PyU6dOITU1FYmJiebnIiIi0KFDB2zZsgUAsGXLFkRGRpoDJgBITEyEn58ftm3bZl6na9euMBqN5nWSkpJw9OhRXL16VbFseXl5yMrKkv1zF47TRJZ4DyHfx8EtyfN0HTSdPHkSn376KerXr4/ff/8dTz/9NMaNG4cvv/wSAJCamgoAiImJkb0uJibGvCw1NRXR0dGy5QEBAYiKipKto7QN6T4szZw5ExEREeZ/8fHxZXy3RESkBWMm8hRdB03FxcVo06YN3nzzTbRu3RojR47EiBEjMHfuXE8XDZMnT0ZmZqb539mzZz1dJCrH2DxHvk42uCWjJvIQXQdN1apVQ5MmTWTPNW7cGCkpKQCA2NhYAEBaWppsnbS0NPOy2NhYpKeny5YXFhbiypUrsnWUtiHdh6WgoCCEh4fL/rkLE8GJqDwr4kBN5CG6Dpo6d+6Mo0ePyp47duwYatWqBaAkKTw2NhZr1641L8/KysK2bduQkJAAAEhISEBGRgaSk5PN66xbtw7FxcXo0KGDeZ1NmzahoKDAvM7q1avRsGFDWU89IiLyDA5uSXqg66BpwoQJ2Lp1K958802cOHEC33zzDebNm4fRo0cDAAwGA8aPH4833ngDy5Ytw/79+zFkyBDExcWhf//+AEpqpvr06YMRI0Zg+/bt+OuvvzBmzBgMHDgQcXFxAIBBgwbBaDRi+PDhOHjwIL7//nt8+OGHmDhxoqfeulVMBCei8ozjNJGnOBQ0ffXVV8jLyyv1fH5+Pr766qsyF8qkffv2+Pnnn/Htt9+iWbNmmD59Oj744AMMHjzYvM4LL7yAsWPHYuTIkWjfvj1ycnKwcuVKBAcHm9dZvHgxGjVqhJ49e+Kuu+5Cly5dZGMwRUREYNWqVTh16hTatm2L5557DlOmTNHtcANsniOi8ow1TeQpDo3T9Pjjj6NPnz6leqVlZ2fj8ccfx5AhQ5xSOAC4++67cffdd6suNxgMmDZtGqZNm6a6TlRUFL755hur+2nRogX++OMPh8tJRESuI61dYiI4eYpDNU1CCBgUuuucO3cOERERZS4UERGRmmJWNZGH2FXT1Lp1axgMBhgMBvTs2RMBAbdeXlRUhFOnTqFPnz5OLyQREZVvTAQnPbAraDIlV+/ZswdJSUkICwszLzMajahduzYGDBjg1AJSaWVJBBdC4PeDaWgaF474qFAnloo8iV0DqDxh8xx5il1B02uvvYaioiLUrl0bvXv3RrVq1VxVLrKiLIngK/ZfxJhvdgMATr/Vz1lFIg/jLYR8HQe3JD2wO6fJ398fTz31FHJzc11RHnKxbSeveLoIRERlwpiJPMWhRPBmzZrh5MmTzi4LETmIzXPk66RxEkcEJ09xKGh644038Pzzz2P58uW4ePEisrKyZP+IiIhchc1z5CkOjdN01113AQDuvfde2dADpqEIioqKnFM6UsQRwYmovJGP0+TBglC5ZnfQZJqfbe7cuWjYsKHTC0S2cURwfVAaq4yIXI/TqJCn2B00BQYGonLlyujevTvq16/vijIRERGpYk0TeYpDOU2PPvoo5s+f7+yykBuwcoSIvF0Ra5rIQxzKaSosLMSCBQuwZs0atG3bFhUqVJAtf++995xSOCIiIktsniNPcShoOnDgANq0aQMAOHbsmGwZ8zyorA5dyMKJf3Jwb8s4TxeFiHTC2uCWmTcKUFwsUKmC0c2lovLGoaBp/fr1zi4HkdldH/0BAKgaFoSEupU9XBrvwB8rVJ4UF0v/Fmj5+ioAwJHpfRAc6O+hUlF54FBOE5E7HE3lmF9asbmCfJ2017C0pimv8FYElZbFmSrItRg0eSGO00RE5Zk0aJIGU7w2kqsxaPJCHKeJLLF5jnydPKdJ+Xl+DcjVGDSVM7ymEJG3KxbKTXVErsagqZzh5cV5GIASeUaxSq0Ta5rI1Rg0EenU+YwbSM1kYqsevb3yCMZ/t5sJ+G4kZE1yQvFvNlOTqzFoKmd4SfEON/KL0Pmtdeg4cy2KOGeE7ny64W8s3XMBBy+wh6cnSL8T0r95fSNXY9BEdFNxsUDmjQJPFwMAcCknz/x3QVGxlTXJk3hu3EfaAUYaKPE3BbkTgybSLXdfC5/8aidavr4Khy+y9oBIzwqKlBPBPZ0Unnm9AMfTsj1aBnItBk1EN607kg4A+HrrGQ+XRJ6/URbz/zyFlQdSnbMxIg+SfieKJEOCy8Zs8nCtU/sZa9Dr/U1Wf3gVFQvmwnkxBk2kG0IITF120PyY+QnaKR2r/ecyMX35IYz6Otnt5cm8XlAubgxMPPYMeU3Trec9/ZHLv9lcu/nvy4rLC4uK0eeDTXhw7hZ3FouciEET6caB81lYtPm0+bHv33KdR+lYeWpKic0nLqHltFV48cd9Lt9XeQjMqIT0TMtymiR/62XgX3+VWPrUpWs4np6D5DNXUch8OK/EoIl041p+oaeL4FM8cfsQQuC91ccAAEt2nvNACVyPgZrnFag0z+klKdzfX/nWagy49XxuIYMmb8SgqZzRc3OC5b3IUyXV8SFSpVRkTyTFPr5oB3aeueq2/XkifmHM5HlFRco96fQS0PqrXET8/W49n1tQ5K7ikBMxaCLd0sflz/Ok94Fnv9uNiUv22P06d9lw9B/379TN+Ln0EMmBL1QZckA3NU0qd1bpd5JBk3di0ERkQQ8/VpVyM9Kzc/HLngv4add5ZOVqGU9KB2/EB+mlNqM8K5Q0z8nPhz7OjZ9KTZO09pdBk3di0ORjvt2egh+TvTOXxDJQKGsr2bmr13HvJ3/ilz3ny7glzzIdF/k0ErZfp5df3a7kkbwtyd9e2JLrtaTXh0Jp85xOcpqkwZu0GU5K2pSYW8CcJm/EoMmHXM7Jw+Sf9uO5H/Yi3weSDMt6/Zvyy0HsO5eJZ7/bY9frrOU0eVMtgxcV1avwuHqerHlOcqnz5LmRBkRqQRNrmrxfgKcLQM5zPf/Wl9DTI+M6RKXIRcUCV6/no0pYkF2by9bUhKXds9/txt//5Dh1m1o4eir10v3a1/C4eob0eyDtrq+XEcELNQRN0lEGWNPknVjTRG5V7ED9+SPztqLdG2tw4HymXa9z9vXzlz0XcOC8+6dYsedt5BUW4ZWl+7H2cFr5aJ7zwE3SG3+P+Bp5Irh9I4KvOpiKJ7/ciavX8p1aJuk8hGq951jT5P0YNJHb/LLnPJpN/R0bj2nrYZWenYeHP9uC7aevAAB+2HnWlcXTFUdvzP+35Qy+3pqC4V/udDig2HcuA68s3Y8rTr6pEJWF9NNcqDLkgJaappH/l4w1h9Pw9sojziyerEx+GnKapMns5D3YPEduY8otGrpgO06/1a/UcsvL3acb/i7T/hwdb8mgNb3XTVnAisGP5ZhWN8tyIePWKOCOBl73fvIXACDjegE+GdTGsY34MNY0eZ7akAP2cPaI+dIBN9UuDdKgjgOCeyfWNPkoXth9LxdIeiHWUsayvo/jae7P37KXZ3rP6fPz4eukPx7UhhywJ6fJ2WdRWtOktm3WNHk/Bk0+ihd232E+k3bWbDFwdg0eV8+TBh/yEcG1b8PZ51EWNKlsXC9J6+Q4Bk0+it9HNzTPuYli6xzHafIYHlbPK5D1noPkb+1nx9lBi3w+PLV93vqbzXPeiUGTj9Lzhd1dc7v5cuCo9takNYzeNKaUozwz95zvH1c9kh51tUDJk2dGWtOkFpDJa8gYNXkjBk0+yl0X9uJigfdXH8MmjT3ifFFhUTFOXbrmuh0o1jRpyWkiV5DesL1xcmdfUKw65IAdOU1O/oLIm95U1pEFTc7dP7kHgyYf5a4b5q/7LuDDtccxZMH2Mm/L2Rcxd93QRn2djO7vbnDqdC2Kh0LYWA5506Jw8GZCNkiDJp015foyoVK7JA1Q7MppcvJVUj7NkUpNk7T3XDn/Tjp7nCx3YdDko9z1fTx39Ybdr3HXbcZdx2DN4XQAwPw/T7lk+0oXd7Xqf3nzHBT/9iWe6PDAThaeVyQNoBwcfsDZ3wm1755UsUq5y5v3Vx9D6+mrsWSH9429x6DJV+n4+2jQSZtGfmExRi/ehe+2pzhle656V6YLsOyUWo7TpLB3ofK3Vjo5TbrjqwGokvMZN2RJ154ky2nSYfOcWk2YVLFsyAHv/iAVFwusO5KGdAfGu/pw7XEAwCtLDzi7WC7HoMlHqf0a1vON0N2/4JfsPIsV+y/ipZ/2O/T6n3Y5rzlOC1nNkeWym89IgydHbyZK+6Nbysth2XbyMjq/tQ4D5231dFFKkQ8S6VhNk7N7z8mDJuV1ZGX18qBp6Z7zeGLRTnR9Z72ni+JWDJp8lJ5veKbbevKZq5i36W+PXTwybzh3Ql9XEeb/7RuPxlqQ5Uy7U67ivdXHkFfo/rm02HvOdb672XSSfOaqh0tyk4ZAyZ4fXs4+i9J9q/ae86GcpvVHSzr/lLeJhzmNio+6fC0fv+w5j/6tqyMy1Ojp4siYarsGfLoZAFAlLAgPtKmhm0BPD9XmSjdmYeXmYKphUhtywJXH9v7/lJzHoIDy8RtM3uzp+c9KeaSWdG3X59zpvedsb1uoBH7kPcrHVa4cGvHVTkz99RDGfLPb00Wx6e9/9DVdx7fbU/Dz7nP2v9BFbZ+mC63smqylpkn2t/0XaHvfzol0fZ1HVykPCfZ6J62lKXRwRHDnN89pqGkqlv7ND483YtDkZYQQWHkg1eZ6pnGD/jxxCUBJIDDo863IyS10afkcoccbz4Tv9zp9m442Q5qb5zRclKU5TUdSs29tQ+Ouy9L0VF6arWS1eR4shydl5RbggzXH3PqDRy0RPL9QOhK3J5vnblHNaWJNk9dj0ORlVh1KU/1CWrteTP5pPzb/fRk/JJeuQUnPykVugfvyUdTGtinrJSQ9KxeTf9qPgxcyy7il0soaEPy8+xyaTf0dfx6/pG1/Nsuj9rpbC77ZZn+vwA2SQUrtfcvl5hag0jTka6y9t2m/HsIHa46j13sb3ViiW6TBkbR3n12tcy5NBLfde45zz3knBk1exlpSpiNNMGcuX8Ptb65Fj3c3lKFUdnJRD76JS/bi2+0p6PfRn6WWXc/3bA3bhO/34np+ER6dvw1zN/5tc32lJiAt19iFf522uT358wLPLE7G+O9KmnFXHUyzvRMVZb0HnEjPwR/H7RtZ3iOJ4Cp/lye7bl6H3FlZIj3XRSpBk0drmjT0VpWWTw+5k2Q/Bk0+xJEbyNqbAzNeyLR/rA1AX0MYHEnNUl3WYuoqq6+11ZNOy7HVeije+t8RDWtZ36H9tUDKL0jPzsNv+1OxdM8F5OTJA0t3n9vE9zbisfnbXVJT6EzMafI86bRt+dKRLu3KaXJeeSx3rbZpXxpyoLxi7zkf4shXsKxfW0duGmr3Ylc2ddj6VTft10NWl2spmTODDKWectZ6z9mzPZMv/jiJv05ckqyjj4v4kYvZaBoX4eliqGKPOc9Q69LvaE6Ts38TyJrnVK43auNLkfdg0ORD9HLTs8UyuNBaalsjiV/KsT6XkRBCdRt7z2XYfK09zzvifMYNVDD6lx4iwtQ8J7tp2LdtpdXfWHHYvo04sA9Xb8cj06jIdll6/9N+PYSKwQGY0KuB28pU3kgDDllOkwcvgVom7JX1nvOS6zXJsXmOfMLFTNtz4A3/cqfT9+us694/2Xno/NY6tJq2GltPXkZaVp7VfZUK1mz8bNYe3N1a70hqtl1NCM5KbPVE8F9YVKx5v7JmGIuXnL1yHQv+OoUP1x5n84uTqY24bU9Okys/W5oSwVnT5PUYNHkZa/dGPX4FUzNzMXzRDmw6Zl+CrxJrF7xrebYTvdcdSVddZquqXm3PjgYK6Vm5ePf3o7iQURLsHbp4Kx9r4LyteHT+tlL7tpozYaMYWkqptM73O90/oaa7P8dZuQVoP2MNnv56l6b1ZQm/FsvyCh3ryaXFsbRspDkwz5ej9Hg9MZE1z0mCpv3nrefDuTJO0TZhL4Mmb8egyYfosbb35Z/3Y+2RdAxZsN38nNqQA+7mjMk9pU/b865GfLUTn6w/gcckwZE97E4Ed/Czseqg7THBbu3EsX2UZTvO+Myv3J+Kq9cLsFLje1VKBM+8UYBCi4ltndml/ELGDfR+fxM6vLnWadv0Zleu5Zt7WhYU3jrOH687YfV1hcUunPJDQ85hEYccUPTr3gvYefqKp4uhCYMmn+L+L6Gt5OdUhV55pXKaNBbbVk6TFpY3NnMZHNyeoxe+vedKfhH//c81m+veGnLASl2To1VlKvtyhLPyi9ydp2Tvx8qymfRCxg20fH0V7vnkL9m2nHlTtNYztLywPJyPzS/5IZZfpH2MOVfGTNKKIy0T9hYWMWgCgKOp2Rj77W48OHeLp4uiCYMmH+KZyUttLLdnWy4sh0nHmetwI9/+gTzVbuTuOObm3nNW9ms7ZrJd0LK+F098/rQ0y9ri72df1GQ5IripNu7wxSzZeXDm8fBE7ay3pAJIa5pskSZfO3tIDS0T9sqa51jTBAA4d/W6p4tgFwZNPsSRr6Ankm4dvVbZU9bNf19SPB6XcvLM3eylNVdKZRq9eNeted/UmufcePjUEmHtfa36Stq2teZQGvYp9DZ01rHQup3pyw/hdic0V/nZefe0Nk6T9DOllLOy4/QV3PfJn9hzNsPK9gXe+f0IftolGb1fHy3aHqX2sShQqT1WUuTC2h0t43fJaqOY0+SVGDT5ED3+cFG61jujmc2WQZ/bzhWSBmHHFSabXbH/Ivads5VYKv3l6qoJe81/3XrO3nGaNKxTLITNz9CJ9Gw8+dVO3PvJXwr7cFbznDbz/zzllP352V3TJP1bXlrplpRqGx6auwV7z2Vi4Dz1pojtp65gzvq/MXHJrfkP9RYz6ak89oys7craHXlNsO2cJrbOldDTAMlaMGjycuuPpCM7t2Q0a70MupdbUITH5m/DZxqmCwEk5bZRfHuDErW17dmM6VfspZzSQwAA7m2msF7DYeu1GprnNJTh9CX1qnR31zQ5i50xk/xYCovOALKcJvVt5Bao145cvV56vDF3/NCwpI+ryS1apiaxRRq0OPtzpmWcJmntUpErE6y81Nkr13U/3iCDJi/3+KIdeHzhDgD6qWn6b/I5/HH8EmZqmi7EddQOhyP3n6GS3n9S7ugBIyz+B5Rymqy/KU2tcxreizvu3e4O/v3tbZ5T+RuQnwe9X/x9hT2H2aW912TN5yo1TRxyoBTpd+aOWeudVoPsKgyafMDOm5NneuIarXS/yS2wnmitOo1KGW6W9rzSkaRatV5uzjjmx9Ky8cm646rLlW6+AkL2vO2aJtvlKOs13F0fPyGEai9IR9hbi2PtWGqtabJ3+/aUMOXydfxv/8VyE7TZE3xIgxZn917TMmK/9HknfoQ9wmmfL4sPt7NnKnA2Bk0+RC/Nc9m5Nno0ebgN+/FFO3A0Ndsp25IFLg5uo/f7m7Dj9FUN+5L/bc81S1PvOYV1LAMKa/GFK5vnVuy7iPv/8xfOXb2Osd/uRts31jhnZ5A3z2lLzlVv4pE+dvQzplQCe+K6ru+sx9OLd2HlATvG2LKTPq40JeypMSp2YU2TtLVNtSmR4zTJGTx+O7AbgyZv48BNa1eK7Ruyo5T2+eFa9VoTvXjhv3udcpOX3mNd1XRlHqfJ4mYtLf7mvy/b2IiWHdlexR1d3wVKbi5CCCz86xS2/H0Zo7/Zhd0pGXhl6QEs33cRmTcKnLY/ae85LUnF8pQm+frSx498vtVqLzkt2zdxpNlPSyDuTEIIvPDfvZi10jXN8lp6pNlSKMspcnZNk+RvlU3Larq8vHnOKXl2XngIvCpoeuutt2AwGDB+/Hjzc7m5uRg9ejQqV66MsLAwDBgwAGlpabLXpaSkoF+/fggNDUV0dDQmTZqEwkJ5bciGDRvQpk0bBAUFoV69eli0aJEb3pHzfPHHSexWuUBftjGRrSsp/mpWWcmdP7yc1YtGegMrKBL48/glh8aB0rYvyd8Q+GyTPNE+QyGB+Nb6tt3+5lrFaVPWHUlD93c3aAgAnHNM5236Gy1fX4X5f57C678ewiOfbzUvy7juvGDJRDpOk5Zf/9ZujpaP1x6WX4sc5YxmP1c7kZ6DJTvP4T8btHUAcRZ7monkvdecHDTJEsE11DTp6ET+sPMshi3cjhwnjHtmL090cigLrwmaduzYgc8++wwtWrSQPT9hwgT8+uuv+OGHH7Bx40ZcuHABDzzwgHl5UVER+vXrh/z8fGzevBlffvklFi1ahClTppjXOXXqFPr164fu3btjz549GD9+PJ588kn8/vvvbnt/ZfXGisN4dekBu1/nzOvGxCV78E+2ci8zKb18SZxRDOl1b8/ZDDw6fxvGfru77BtWID1XD/xnM2atPCpbXmBHjoY9N5onFu3EqUvXMGzhdrc0z529cgPZeYWKuQ2uuM1Ihxywv6bJYpkTyqPYTCr521nNOkXFwurnwGrulsJz0nn33Mme4EfWw82FNU3qOU36TASf9N992HD0H4xz0bVLTbEQSFOYNULPvCJoysnJweDBg/H555+jUqVK5uczMzMxf/58vPfee+jRowfatm2LhQsXYvPmzdi6teTX6apVq3Do0CF8/fXXaNWqFfr27Yvp06djzpw5yM8v+WU+d+5c1KlTB7Nnz0bjxo0xZswYPPjgg3j//fc98n691U+7zjsUuHmCs5qZlG5wa5xUu2Deh0LznNLN3Vrekq0aES2u5xVZDXiPOClPzN2kOU1abmTyZlL5+pYBzcfrTuDkP6XHALO6fRtFcEbQVFBUjB6zN2DAp5vLvC0l0uNy+tI1DFmwHVtP2mhCtrVNlc+39JTFhgdb3Ya7aprUhhOQJn/rKWgyWXckHfttjE3nTIXFAi/8uM9t+3MGrwiaRo8ejX79+iExMVH2fHJyMgoKCmTPN2rUCDVr1sSWLSWDx23ZsgXNmzdHTEyMeZ2kpCRkZWXh4MGD5nUst52UlGTehpK8vDxkZWXJ/ulVyhXXDVP/t8WgkKcv255LTe2+W5ZrmCOvdcY101MjgiuvYG2RZe6N853PuOGCrVpwwQGXDjlwWWU8rtyCIny/IwWpmbnWa5oUivf4oh12lUe6iVeW7i9p4pN8Z5xxCI6n5eDM5evYlZJR9o3dpDaO2Nhvd2PTsX8wcN7W0i9yyn4dbJ5zdu85yebUan29YRqVsga3vk73QdN3332HXbt2YebMmaWWpaamwmg0IjIyUvZ8TEwMUlNTzetIAybTctMya+tkZWXhxg3lG8HMmTMRERFh/hcfH+/Q+7PXrjP2J3dOX37IBSUp8dPu87LHljURhy8qB5PSqQ88celwVguhO657WntFWlvLspyO1lZ4umHV1Ye7x+yNis/PXnUUL/64H/d+8qf8WJYqUOkSnrns+I+Wr7emYPiXO2U1o57sdZWVW4DVh9IUm+Is5+QzueCkYFo9EVx7crVLa5okf+erjCdQ5MJEdHIPXQdNZ8+exbPPPovFixcjONh6tau7TZ48GZmZmeZ/Z8+WTqB1BXf3iLGXltGVi4oEEmaWfc4wPXDL4JYad2GtLFpqRGwyyINNvY4DNGf9CcxZf0Lz+lrexdoj6QCA9Ow8i+DAogbPRYfEkUTwBX+dUnxeCCH7MWPPeXxy0U6M+GqnzVpFdwZ28kDEel6VfHBJ55ZD+p7zVfK75KOG6/P7Y40QAu/+fhRLFDqMlBe6DpqSk5ORnp6ONm3aICAgAAEBAdi4cSM++ugjBAQEICYmBvn5+cjIyJC9Li0tDbGxsQCA2NjYUr3pTI9trRMeHo6QkBDFsgUFBSE8PFz2zxs5e2wnLZOfZucV4lIZe/SdvnQNP+8+53Ayp6055Uz+OnEZr/2inqflzgufrV1ZW340NQuv/3rQPB2MM877b/udNw6QswKwrNwCvPP7Ubzz+1HNwxLYu2vp+rtTMmTjMTmj8kDpWDgzEfz3g6l47odb89rZU+btp69oWs8VXwu1TcoHjNRe0+Ts7650c1qCJmcPruks1i7hu89m4JP1J/DCf70rD8mZAjxdAGt69uyJ/fv3y557/PHH0ahRI7z44ouIj49HYGAg1q5diwEDBgAAjh49ipSUFCQkJAAAEhISMGPGDKSnpyM6OhoAsHr1aoSHh6NJkybmdX777TfZflavXm3eBsmlZ+Viy8nL6NusWqll9s7j5ahu724AUHLheaidY02juYW2hwZ4f80xq8vd0zxn+t/6zqx1x39i0U4AJT3TvhjazuFyS5uJRn+zC/1a9HNsQxa03rhtlbtAcrPSOmq4pgBSJV/n43UnLFZzzQdC2uwtylhD8t9keZN6SZBW+otblhw1taY6Z1t5INUiAduO5jkX9p5TC5pcOo2LG1gb1qS80HXQVLFiRTRr1kz2XIUKFVC5cmXz88OHD8fEiRMRFRWF8PBwjB07FgkJCejYsSMAoHfv3mjSpAkee+wxzJo1C6mpqXjllVcwevRoBAUFAQBGjRqFTz75BC+88AKeeOIJrFu3DkuWLMGKFSvc+4a9xN0f/4n07Dyc7KmQ9O1AspDpoufIJST5zFWHg6Y8K5OmaqWnRPC7PvrD5jYOXXC8Z4wj8XDm9QKsPpyGpKYxqBgcqLqeK5r6tG5Ry71Tnsak/gJnjNFl61Bcyy9ERKj6sbR7fyrPJ0vyJy/l5KFKWJD17agEltJz+7/9F9GoWjjqVKlgfzkVDsyor5PRttatHtW2cppcOU6StHzqOU3Sv70vaJJyV/O8EAKXcvJRtaL1z5+76Lp5Tov3338fd999NwYMGICuXbsiNjYWP/30k3m5v78/li9fDn9/fyQkJODRRx/FkCFDMG3aNPM6derUwYoVK7B69Wq0bNkSs2fPxhdffIGkpCRPvCW3cuRzn35zLCalrvVlqWly5EtYloRuZ3zl3TF1jRAC6dm5OJFuX9d169t07HX2Hu+W01bh+R/24rkle62up7U4rjjetj53Z69cl9UcWFt90OfbnFUsGelx7/TWOtVefvZuC9BW49HujTV23eTVNvn04l3ofrOWWMmVa/l2D7BoT+1RoUuHHLj1t1pNk6xWzAtqmoqLBbJzb9VgS4vsrKmobHljxWG0n7EGP+8+55b92aLrmiYlGzZskD0ODg7GnDlzMGfOHNXX1KpVq1Tzm6Vu3bph9+7dziiiT7N1g9GS06S6bYdeVbI/tV56ruaOH4sCwO0znJM4b2rm0Rp8WJ5NR8/uqkMlAfbR1Gy8uvQAJvRqgIS6lc3Ltd4/Dpy3fp4dGTjV2q53nr6CB+fKhx6xtv4NG5NVaytP6T2UGmn8SDr+5WANq61tqymw0dwp3YwjTU+ZNwrQZvpqAMDpt7Q3+0qvSYU3B+xU+xy4choT6XlTrWnS6eCWagZ9sRVbT17BHy90R3xUqOx6d9yJP+LUnL1yHfP/LOnQMGPFEdzfuobL92mL19c0kXutOZxu/tvZP5Qc2Z7p2jj++z2lliXbGJ7BOeM06f/Cp8SR67XSfcjeWoEnv9qB7aevyKZGKSmPc46jQ+dD4SUHL2Si/5y/ZAnTZdqHPcVR2LzlPtVCQ0emwXB10rbWzduqudCSCA5YD4akTXJac9600lLTVCTbv3MP/OlL13DlmnNzjraeLEn8f/nn/SgoKnbr9e7M5Wu4Y9Z682OdTCTBoKk8y7RIHE7Ptj2cvXTmdKWvj61AxTr7v5AZ1/PRc/YGh/bmjBu12vVZ7aLpCGdep0wXHq0Xv78tR7O2uHC9+7t8Khdb0rNuNSutPpSG+//zF05fsj0gqlaym7XW5HKFz92whTuw52yG4hhLngiTbe1z+6krSM/KxfRf7R+T7WKmtoRv2703b63w+4FUHE+zr/mm0MZwAWosv8e5Vmr7CmWJ2LZrz+wrx62/95zNUMxvk5b1fMYNTdNOaXEx8wa6vbvBXFNnjyOptmvp/zh+Ce+uOurWz/6mY//IHuskZmLQVJ71+1ieODz2G9vNk67JKZH/r2bR5tOlnvttfyr+/sexm67S9uylFnwstRj0U2+0nsXTFkGD5fQz+85l2LVf6a/FEV/txO6UDEz6716nBYaOjIOjtNolKzlDrv6xrVzTpL7+tpOX8a/PtuD2N9dii4bRnC1vPj1mb8QxDQGOPTk4z/2wF73e3wRAuex5Fj1Xr+cXotgiSfrqtXyclc5moLJ7yx8u1ppILZO/nTlfnuW1YPqK0gGsZZOcs8Y7KsvUJ+O/26NpvQV/nnJrx5d8i5q4sqR+OBODpnLs3FX5L0xNY7Co9IpxBm9s6FIrs7SZpOzHyXlH5lZNk9M2aRel/WbeKHBaMC7dvtagadTXyVa3o7AX+wrlBKWa5yQ3kL/+tm/aC6XSS2uQ1dg6nmpLlT7/s1fdGspjzvoTaDLld/x24KL5uYHztqD19NW4Y9Z6TP5pf6nXy8plEYjk5qsHQpaBn7VaKXtZvstf914otY5lgJee5frJanPyCtH5rXVImLlWltRtkmUxnplaPlhJ0OK+z75lbb1OYiYGTXSLp9NzPL1/R9i6kWw7eRmtHagyl/r9oPMmADbXFDl4rC0vXPYkXp9IV67N8DMYnJZQLz0fn208qek1avOEqXHF5zTbPD1JkeKpsbZLaz1Wl+29gN7vb8SJ9ByrwbvlIqV1HRkf6oM1x5CtkGf1s6Qm9p2bTbzfbEsxPyed+eDb7SXPq+c0yZdYq2myrOlx1hQvAEoV0F/hxFgGeF9uOePw7rTmZH25+TTOZ9zAxcxcTF1WuvZLLWndkrtreiybTnUSMzFoIvtIv/LOntXeHd33nU3tPnT26nUcS8vGk1/ttDropBbv2Jk3ZI25psmBY51bUFym3nRqzagGg8FptZbSzTij+VVxHy7Y5lP/l4wRX+3EzN+OKAcsFk8ZUBIAJJ+5ajV/bty3u3EsLQeJ721E+xlrsXzfBcVztv5oOh74z1/mHDalINaRHMAP1hzXlNhui7X1LcuV9MEmrDui/EPDMmgasmA70rJysWTn2TLXOlmWw18hyHDWMAPP/7AXbd9Yo5r4nZaVi+GLduD7HSmy68cfx/8pta7W8er8DO79YVsqaNJJVRODpnJOy3dAejFx5SCEWjbd+a11ZUw2dy61G8nCv06j9/ubkJ1rf28md3D0NGaUqsq37/VK6/sZnBeI6GkuQHtsvtnE9u32FJWaptLPztt0EgM+3Yz/bPhb0z4u5eRhjEre4p6zGdiVkoGJN3uhKnWHt9k8Z8dxsbe7/bCFO1SvPUpPm0bAt2R5I864XoD+c/7CC//dh/dXWx/9P/nMFauJ25bF8FOoaXLWMAP/TT6HzBsF+EElJ+q1Xw5i7ZF0vPijvGlTqfZLy8wIQEnQYq34P+06h10pJdfmwqJicweDLX9fxsB5W+zuGODMzjTOxKCpnLN1oRu+aAcavboSb/52uGR9V5ZFwzrnM27giUU7XFgK+3hbk6LpkulocHHKoqebPb/+1HZ58EIWZiw/7FB5tO7DmVzZ7Vpty3tSMko9Zxq/RirlSunefvbIuhnkK30+dtjIebTnuJhuvlpfs/FY6RoSk5N29L60TC4GgIuZJXlF646kl1pmsv3UFQz4dAs6vaU+XprlWwlQCFCc/dFRajITQuCiSq6U0rfVsnna2nAW8zYpB+jJZ65i4pK9eOA/mwEAjy/agYSZ67D5xCU88nnJWE9PKeQOWmPZbOink2hFJ8UgvTLN7j5vU0l+iCtvSlovoJY9bzzJ64Im8+CWzuGMaUMA4Hsn9SJyS02TA6/ZefoKZv6mHBjK5vNS2fhsi1oQg8HxLvrW4lzTjV7pMI76epfV7dpTiWI6T0MWbNf8GlPT1vT+zRSXKwUplgqs1F6o5ex8vfUM3rjZE85a/pvlZ09pe6aapic617FZVi2UimytNqusTVx7VXrpnbQYmuSP45cAAF9Jcrb+ycqDEEJzM2jpnCZ9NM953YjgRHr58gDA/D+1JRvrjaOxheXr9p/X3tW5WAjkOmG+PzVCCPeM0O7APixHFTd587fD+GnXraRoAaEpKjMYrAcAjjqenoOus9ZjwbD2dr/WnoDVtKrp5qrF2SslzT3hwcq3rZBA/1JJ5zNWHEJQgD+eT2oIwHrSs1I8cfBCJl5ZekBT+SzfvdLxMAV+lcOMAICwIO234BkrDiE9Ow8fPNzK/JxiYGblPFjW1hwsw1yUsu2q9biT7s9QMkjmt9u1/UAqKLQMQh0tnXOxpons4op7ktZxmkx0kg8IAFi6p3S3Yj0zHTpHk+7LUpPzzGLrNRXOYDvvpuyfYGd1WDh8MQvzNp2UjQklhPbtO3saEJOUK9ftHrQUKMlp0aosuT1KeTkAEBToL3ucnpWLz/84hU/WnzDXblgGmtLJfpW2ezHDjiEBLD5binlhN58z+vuprqO8aYHP/ziFX/ZcwFFJbpDSobBa0wQDzly+Zs7NUstxs5c0OJJ+xyxrtrQGTAATwclHuKL548o1+0bF1cdXx0vdipp8krWgKK+wCInvbcSYb8oYvDnp2Cl1EigWQtOPBwMMDgdNWoawcGSk7CU7tQdNZbmOKPVKA4DgQPntTFqrZAokTO+rRqUQAPJu+0q1JfYcY8s1rSXTB/qX7EtrbzrppqS93exNNr96LR93vrMB7WesAVA6R9FR0mMnHTBU+rw9120hBPI45ACRMlNtjdZf2HoZGdYbmY7cNSflIumJgPXays0nLuPvf65h+b6L6itp4KwKHqWcJHs27coJX10dU5flt5dSoACUNM+pMc3zZkoENzWLyW/wpV+nFNxZjrWk9rxSQGRKiTIGlJRV6zmUBrFFVmpySsqhvh2lMbOcwaASNBlU1rGl3RtrcOiCxfQuOrnsM2gq5+xuanBpIrjGFXXy5fFWl3Ly0P3dDQ69Vu8TFFu7B2n5rFvWVji6HS2UbphCW0qT4gTVzuTq85xfVKzaXd4WY4DyOQq2CJqkb6HgZiRh6sZeMVghaNJYazNxyR7FDhCaapqKLWqaioWmYy2t8ZJ2xVcbC0rLJdLWftWCQ1vbypMkeksPqT2/dS9fyy/dU1f7y12KQRPZxZUDUGq9TjsykzuVMBgMWHdYvWu1LTqPmaw2+2gpe25BMQbOU07atmc7WqjVMujhGNtTieXo93HSf/c59LqKKsnTlgGvNCAy1TSZamzMNU2yG7wBl3Py8NnGv82Tlyudo6V7LuCDNaXHdLI8b6a8JSnT9qSBn5ZjLZ1bLlchKJFu4tWlB7DnbIbNbar1BDQFN/YMxCkN5KSdPQwONs8p0UsLA4Omcm7WSnnCZ6kqUQsuHXJA63o6uKl4KwPKlk+i50O/fN/FUu9NbZoMaxPUbj1pYzwi+4umSDVo0sFRtqcEwxZsx+Jtjk8HYi+1RHDLmibpPGumYMn0f6XQkt5rFzJvJXr7GYDR3+zCzP8dwYivSsYUUjtHSmNWWX72Ll/Ll11PL+fk4dDFkseBkoBKSxPdI59vNf+daxHoAfJaoRX7tTU/28pbs6f5V5o/Jh0SxiCraSpb0KOTmIlBkzdxR9PIXR/9YaMMrtu33pt+fIGhjKNv6/kUXbmWjxPp8vFiOr21zjwSsfSi++Cnmx3ej7M+p8O/VB61Wg/seY87z1zFv3/W1i3fGdRuvpY5TdJEe1Pzlunm3iC2YqnXX71eYA6Y996sqVEbC0stcLN010d/oNlrv+Of7DzZD1SjnUGT1LW8W0HJK0sP4OCFTDztQM9UW0GTPT+u1GqapMNpsKaJ3E7PNyxn8PG3pxtl+RzpoRbEmme/21PqudWHS3qLSd93Vhmmt9FzknR5VrqmSRI0FclzmoIU8qIsA+6iYlFqGhITpcBN7bzl5BXik3XHcVkyT1ygZP+X7ew9LG0OzS8qRr+P/rTr9dLXKjHFcHbVNEmDJpXBh30lrYJBkxfRw7XUpTdNPbxBH2eAoUzn0Btv6M4eDPVyjvIkqc6ihxrXPJ3O+wWU1FhUVBjg0jKn6eWfbwU8BRY5TYEK+UaW/rYY5VpKqaLJ2vfqukXiuCkRHAC6vL0eWbkFWHs4TXFeTcvPw9Xrzvn8FarkNE1ffggXMm5Y7YVnKVUybYvaBMBl/UyxponspoeLqWtzmjz//nydoYwzlXvjGXp75REAzsuJeP6Hvc7ZkIotJy+7dPtabD9lPa/L0z5+pHWp58KCAmWPMyWTS5ua2UzBk1oPPClrzVN+BgMyrufjm20p5v1Yq5gpSaq+tYJlkviXf53G8C93YoBCs7HlhMwfrDlus+xaWGue6/TWOoz4P+3Nxwv/Om3++8UfHUvwt+XQxSz867MtssFgPYFBkxfRww3LlWXQQUxYLpTpMHvpSfrj+D9eU/Tf9qd6ugi6p3Qq720Vp7q+ZU2T0d8PL9/VyOo+rNW05BcW46n/S8bLP+/H9OUl89JZ+3z9tOs81kh6rVrmREnnFjT9ODb9/44Do7NrYSv4cDRwPq/S+cIZtp+6gtmrXHM8tGLQ5EX0cNHXQ+85KiMf7T1nzWPzt2OrDmpwqOwMBuUxhFrFR+K3cXegfnRYqWWm/BxTE1Ggvx8GdahldT/War7DggOw7WZQsfJAqmx9LUni1tbJLSjGifRstH1jDUZ+5brOAgM+tT60hl5dcnHzuC0MmryIO2Zwt83z4zSR4wwGg8/2nrNFKV+EvFOr+EjF55vEhaN2lQqlnt9/PhPpWbmSnCYDgm000VlLhJY2r8VGBAO49d3QkkBtLT/nWn4hpvxyEFeu5WPVIdtT3pQ3nk5TYdBEdmFOk3czwL6Rfn1JUIC8d9VJK4m+pF8GGFA5LAg7X0nE2ufuRFCAH/pLmuZCjaWnU5m+/BBuf3Ptrea5AD8E2EgGl/Z2syTtCRZws9bInpu5tZqmM5evYfPfrBU1CbMYzNSV0wdpwaDJi3jzr3wtfP396cGhi1m4mGXHzO0WvDmwtayp7TF7o3m2d/I+VcKCULdqGPa+1hvvP9zK/PzT3eqqvubA+ZLBJZVG67b0+MIdqsukSeamj5U91y9rNU3e2mzmKlPvbSp77OnffAyavIgeblguTQR34bbpls82nnT4td4c2G5TSGy11q2c9Mky3ggO9JeNm2RZM6EkUEPvOWukQZMpGFcb90iJhpjNJTrXq1ym1y8c1t5JJdHOsmbc02kqDJq8iB5uWC5tT9bDG6RyJUDjyM7kPTQFTTejlsEdatq17W4NqwIAzl291UPseHoOUjNz8fG6E5q34+oxh57oXAfVbuZamYztUQ+Ln+yIN+9v7tA2f3w6Ad0bRTujeHbJkkyHAzBoIjvoIaRgTVP55umqcWcr63xYpD8VNARNpua5AW1r2LVttYCs48y15r+1BGJap2Fx1MDb47Ho8dtlz7WoEQkAGNShJr564tay5FcS8Uq/xja32bZWlM11EhvH2FdQBfMeayt7bDmS+Lge9cu8j7Jg0ORFPB1hA6wMKu883XPF2ZRmqyd9K7QRuWsZ7dsYUBK0tKlZCZsmdde8by21WG1rVcId9atYXcfPYMCkpIaa96vVR4+0xk/PdEKDmIpoGFsR343saF7Wpmak+e+uDapi7qNtsfa5O1E5LAh1FHocOqJmVCg+swh67NWutjw4k06Hc3eLauhwW9maGMuKQZMX8fT9avryQzhz+ZpLti2E8Pj7I9v0ELg70x/HL3m6CGSnInvm91Dh73fr1lezcqimEcIBwE9DDVGlUKNsHrxwhSlf/PwMGN29nuIceFqsmXin4vOtakSiTc1K5sc5koAjIkQ+YnqfZrGoW7VkTKvuDeXNbm/e3xxRFYx2l8tgAJKaxtr9OinL/UoP+SeD2pRp287AoMmbePh+Nf/PUzh9+bpLtp2aletztRi+yI5cVyKX0PIZXD62i9XlllOIBGpsLtNS01QtMliWvNwkLrzUOv43m4V/HdsF97YsGS5BrQij7izdG7BedBhe6lt6RHPL4E82NIKVGjjLYHBQh5rY/FIP1fXVmLaiJeG8YUxF1Vq+OEk+1lN31kWLGhGY3r+Z3eVxBQZNXkQPvedcJWHmOvy854Kni0E2rDnMwfbIswo11DQ1qx6huswY4IeaUaGy57T2pquoIWiqHhmC8YkNAABDEmopThhtquhqEFMRHz3SGrtf7YU9r/VWrHlSq416uF08WtSQv0/LoKl5DfXjYIu0tkxq06TuiqOuS816sKXN7d/dohpqVg6VTV5s8sngNoiqYMS7D7VElbAgLBvTBY91tD6Cu7swaPIivl4Rs/dshqeLQDakXHFNTWNZNLdygyTf8O5Dt27CWgc3XDamM4Z1qi17btaAFtj9aq9SAYF03KYhCeo354rBAbi/dXUAQJNqpWuQStYJRPMaETg0LQnT7lOuHbG8lleqYER4cCB+vVlD1ii2IuY+2hbzh7aT1VQN61QbPz6dYH7NsjFdZD1ALYOmulXDsGJcF2z/d0/V92SvmpVDsWpCV2x4vhuqhAXJlpn6VVSPDDE/91LfRlj/fDdUrRiEf991K+G8eqWSdaTHfvGTHQCU5Jolv5KIB+1M1HcH22Ez6YaPx0xEdnu4XTzefrAFar+0wtNFIRdqFX8rMLaVCG7SokYkWtSIxOa/L+FYWg5CAv3xr/bxiutKk8ebxakH4f1bV8cjHWpibI96uK1qGNYcSsOTkvnh9k7pbf471Fhye1XqzaeWG9ggpiK2TO4hy4sSQmDafU3RvHoEWkvylUy+f6qjeUBMpUE7m1p5P7LtjOyIKb8clDWD3dMyDr/uvYDExvKcJ4PBgNpVKmD52C7YcvISJny/1/y8yedD2mHt4TQM61QbwYH+2P5yT/Prtp+6jPtalQSfD7eviQV/ncLttaPQuV4V2T70iEGTF/G1JFyisvJjXXm5IE3ctncaoPlD2+O91ccwsuttqutIm4iktTVjutfDJ+tLxl96tGNNRIaWJCnfdjOBOrFJDO5qHovf9pdM2hsRKk+2BoDJdzXCtlOX0bpmJWw69g8AKDbZmVSLCJE9NhgMGJJQW3X9mPBb+T9KTV1adbitMn6f0FX23FsPNEdS0xh0a6g8PlNsRDDub13jVtAkWdarSQx6Nbk1BIEpCLJ8/sW+DXF7nSgk1PVsrzitGDR5geNp2Rj+5U4MsnMgNiLfp89fo+Rc/pJaB601TSbxUaGyaVaUSAOlbMlgiuN61sfyfRdw+vJ1PNhWuZaqSbVwc9CkpG7VMGyZ3BOhgf544cd9yCssRkx4kOr69qpRKRSv3t0EESGBTq+dqRAUgLtbxNle0cSB3QcF+KNPs7L1uHMnBk1eYNJ/9yHlynW89b8jni4Kka4wn8k7dW1Q1VzrooW0RtEVE07PfqgVBn2+FRN7N0BOXpH5eWOAH5aPuwOpmTdQL7qi4muHd7kNxQKy2hNLpl530twsZxrepY5LtmsvazVovoKV217gmsWIqERUQo+JomVla2BEkx4untJiyt1NXLZte2/y0hG07a1p0qJ5jQjsea03Hu9cB/9qVwO1KodiXI96AEoCHrWACQBCjP4Y17M+Gqskhpcn8VEhtlfycgyavIDW3iJE5Y3WQQktaQ1MTD4c2Mruffz5ovaRpqXeGtBC03pPOrF2obLCQIZ6yqE0wIAH29ZAnSoVrNbolIUpMKscFoSNk7pjYm/nj9jtq7564nY81fU2PNxOuQnTl7B5zgsU6ejiReQL7J2o1zRysj1qVApVfD6qghFXruUrLpv7aBtZd21rtI4tpEW/FtXw1ZYzsufyCl07kmmXelXw5wltI7L7GUqatoQQuu1VVZ51bVAVXRtU9XQx3II1TV6gsIhBE5E9vnzidqvL/e3odvfJoNZw5n3652c6WVmqfUfOnPNVqTbb1UFThzq2J4A1u/leGTCRpzFo8gJ6qiYn8gZ32vjVq2FOV7O7W8RpSnCVTo5qTa3KFdAqPlJlqT3fdecFEErXmPa1S48JZKK1WfSR22uiS73STaEGwK5AtDwkGJN3YNDkBVyR+EjkSyxHfrbFX6Wa5raqyrO9W7vBV65gRM9G0bKZ4j96pLVD+7eHM2ualGYm6VxXPe9r+8vaRpie+UBz1fGR7Kk1Ksv4Q0TOxKDJC/hKIvjdLap5ugjko5QSma3xU7lhr5lwJxrFlu4ppbb+nim9sP3fifhiaDtZYNWmZqSN/WsuqpVtOC+QkOZNBgf6Yfp9TeHnZ0D/Vspj9JgGeZSy9xzYQ2l/RJ7AoMkL+ErQVN9Kt10id1Kr6fHzM2DFuDs09ZZrVj0ckaFG+PsZYDAYZEGMqRZFKQCTLi8LZ8VMD7SpLhv76MDUJDx2cwTqDwa2Vk3wlU4k+9MznbBm4p2oElY6uCnr1athDK8bpB8MmryArwRNAaxiJyvKMs6NUgBRLSK49JM3WWseMwVBUkJy6/+/4bejX/NqmDOojWwdWdB08/9vRnTEhwNb4ZfRnVEvOgz/GVzyGn8nRDz21jT1a65c02uAQZbTFGCR8PXugy0woI318bDa1KyEShWMeKN/c83lcWZNGZG7MGjyAgVFru3F4i72dvOm8sU0w7mzfP1kB9zXKg4tFZKubX0WhUVitDTnp0WNSMwZ3Aa1Ksvzn6RbNL06qoIR97WqjpbxkVgz8U7cdTNwcfeceX+80N1q7Zm1DrrR4cGY/S9tI1k3lNSsvdKvsep6BoP1mrLuDctH93XyPgyavICru/66i+UvWCKpqApGfDq4je0VNapbNQwfDmyN26qUTu62lYhtrcOq2kvtqTl5/d6miAwNxP2tq2veryXLddXeU3hwAOKjQlWXGwy3Bvt0dLBQkzpVKmDJUwn4+ZlOePKO226Ws/SbEsJ637/aknMmytzAR+Q8HNySNDH6++G53g0wswzz37EHDNnSUCUHyBZrOUJKvU9tBTiWN2rpY9XgQxJvKAUKUvWiK2LXK73g52fAz7vPW11Xyd0tqpUaJsBWM77aMTIAeLBNDUSEBKJljUjNZfhkUBuM+Gonpt3XVPb87RbjL6mViq1z5I0YNJEmzaqHIzjQv0zbcEY3a/Jtrhi8sEihP729NU3Sx2oBl70l91Mog6mX2MD28fhux1m0qBGBfecyAQCTkhrizgZVcSQ1G32axeJ4Wram/Wipp/HzMyCpqX0zzfdqEoOjb/RBUID914Vm1SNwNFVb+TlGE+kJgybSrKwxT6C7EznI6zgjrn62Z33ZY9MM81K2gqbEJjEICwpAm1qlB3hUi+ukAZ+j49F2vK2kluatAS0w4/7mGL14lzloGt29ZALZZtUjAABKFUvtalXCzjNX5U/aKMtdKgniWtgbMB14PQnX8wsRVcHImibySryLUSmv3VN6dnNn1ACw9xzZ4oxahQm9GsgeP5/UEG0tgh9pInhESCAAICY8yPxceHAgdr3aC18+3h6Aa2qaFLch2bbt2rDS0dA3I7SNSi7VTWPStak3Yl2VAUDVNI271SsyLCgA0RXVezUS6R2DJp3zxHADSr/MAeVftvZg8xypeb53SaDjaGz+UNsa8PczoI9CE1N0xWD8+HQnGCUdEaRNY/Mea4snu9TBkqcSZK8zBviZgxhZTpNOqkgsv489GkXDGOBndy9VrT+Ivh3REY92rIlFj1uf189SdMVg/PFCd+x+tZfm17CnLekVgyady/dAzzm1QM1WcqstgTZ6z73/sLZuzZ7waMeani6C7lQwli3HzeTYG30xpkdJk5ra/dtWJ4Lo8GAcmpaETx+10vvOIP3z1oPYiGC8cneTUkMISEk/+mpllOb8Va0YpLySE0kTwV+/tyne/1crAKVr2j7QMFCnFrWrVMAb/ZsjPirU7tfGR4WiksWI4Uo1dhMSGyA+KgRP3VnX3FSr1ERK5CkMmnSuQGlSKBezvLiZlLWmyVqPpYiQQNzf2voAep5UloH4BnfwzYDL1KxVVtJu7kq1Hj890wlbJ9ue6ywowN9qrYm08sIY4If4qBBUrmBEXGSIXeVV24e/nwG7Xu2FHf9OLHOnCZOgQPVLtDRoGtqpNiJCS87HM93q4j7J9Cc9G8eobkNpBG93UTqMzybWxx8v9ECVsCCsmXgnJiU1xL+tjPdE5G4MmnSuyNqocy7Sq3GMYi1CWUqy/d89rTa9TLT4dexuHz/S2mrNSVmCJp205jhduJOCJimlVpk2NSuhcljZa24sR+xe/1w3bJnc02YNKKD9sx9VwejUWqYX+zTCbVUr4PV7m5ZaVlOlxsdgMKBe1TDFZadm3iV7/MOoTmUvpIMsT7VlrtRtVcMwuns91XQBIk9g0KRz0pqmxzvXdss+/fwMeKlvI9lzQogyNc/ZSv4sawpDnJUpM7Sa+1hbBPobEGzl170jCgp9c3A+Z9U0SdmTCG5vQrLllgP8/TQP5hjthuY2JXGRIVj3XDcM7VS71LIalULx3ciO+H18V83bs6wlq6Mw8Ke7SMuyZmJXLB97h8fKQqQVQ3idK7xZ0xTob0AVJ/za1kopr6mMKU1Wb4cVyvhr0hn58nfUr4rD0/rgjRWHsWjz6bJv8Kaish44napeKQQ45dxtaqmVaxoXjpbxkXj6zrp2bbsstYVxkSH4fEg7lwSKZdHxtsoOv7ZBjHJtlLtIT0c9TuZNXoI1TTpnCl5KJhF1434t7vMGg3xSz+BAPwyyM1dHLRcksXE07mkZp7hMK8vRkR2lNtVLWW64A9rUQFxEMO4t43u0xpk38yEJtTSt9/Jdzs810XKY61SpgDfvdyAhuYzfn15NYkqNdq1XCXVtB1OejuV9tNWafBxrmnTONFlvoJ+fW7s6K42iLL3GHpneFwDwzbYUzdtUC2y+GNrerrIpb7tsr7d1aMvSfBhVwYi/XuoBIYBley84viEr9r7WG7VfWlHm7XS8LUpzj01X1HxaNs/9OqaL07YdHhyI7NxCp21Pz9rVjsKSpxJQq7L9Pd3cxleT/cinsaZJ50w1TQH+hlK1HUq/eq3NZK5EbYLUIoX7plLQ06RaeKnn3h7QXGWbzvtpWzqIce3P5rJc30tqCQ3w8zOgYYz1Zojt/7bdS8wZ1AY0LC52bJiLDnWiMLq7vLnMkV6Dlue1eY0Iu7eh5rPH2pr/dkUSu97cXicKMeH6HUiSIRN5IwZNOldQZGqe8yt1435cITnUNHeVVvVV8hqUAiSliqKFj7fHxF4N0EnSHPBw+5o4NC0JSU3lXZ0LlCIxO/VuEoMPB7YqddNzdVNDWUZElw7UpzTfmFQlO8+foxYMbY9VE0onEAcF+iHPwfMkrSWKCAlExWD7AxNXzD1n0qx6BN68vzkSG0f77DAQ3oQVTeSNGDTpnKl2JtDfUGpEbVs3YC3UcnWUE8FLPxcTHoxxPevjg4db4fbaUeaarlBj6ZbfQicMnzBvSDvc16p6qeedldPkDA+3i5c1XUnPm60eiK68j/x3VAJurx2FTwe3gZ+fQTH5PiTQ32kDqtrqyd+9YVV88HAr2XOuvo8O6lATXwxt77RxlLyZp78xnIiXvBGDJp0zDTng72dAP4uJNdUCnofa3hokcpzF5KUA0ELS5KE1aBJCWM0big4PxpJRCYoBjUmhCwfqFNDWfVotkdfaBTw+KsSuy3tkhUAsH3srF0c6515ZEsrLql3tKCwZlYC+Nz9HSlNVhBj90VihydUWASA06FYgYjAAV68XWH3NwsdvR//W8s+LluPjytooT/i/4bejemQIFj/ZwdNFcSsfO41UTjBo0rlbQw74IdoiP8HPANS2SPQUQmDafc0wZ1Ab7JvaW3HQyO4NoyXbUL5yaW2es0ehC+fRKy4WigMAWkpqGmtzDjzLQxJVwf6EZz/JN0u6v3cfaonKFYyquU3uDAiUjkNIoD+evrOuQ4ONDkmobf7bAOBSdp79hZKO2m1RVWUal8mVvRA94Y76VfHXSz3QuV4Vt+63rNMilRVjJvJGDJp0rlBS02TJYCj5tW4pxOiPfi2qIVwlp0R6X1a7R1sGTZZDDjjCGc1zaoTQ1tzQskaEebZ2rRxpBZUGo9Jej03iwrHzlUTZcA2t4iPNf1vb1bT7muKZbvaNTWSNUk1TdHgwQoz+ijWUtkhHbjYYDBjbw/5tSD+PP4+Wj1b969gu+G3cHUhsHA0qO483zzFqIi+k66Bp5syZaN++PSpWrIjo6Gj0798fR48ela2Tm5uL0aNHo3LlyggLC8OAAQOQlpYmWyclJQX9+vVDaGgooqOjMWnSJBQWyrseb9iwAW3atEFQUBDq1auHRYsWufrtaWIKNJRucAaDAXWqVJAltWqZEkLaFGUwlNR+WHq8c51Sz5V1nipnJIKbWMZvWm4At1WtgHa1o+xuIrNcO9ZWjyRhOcGrfAvWapNsFe3ZxProeJtyE+OzdgY60py4cT3qoVvDqhjZ9Ta7tmFNvWj1wRPVRuKWvn3LpPhQYwCaxIX7XPNcecWcJvJGug6aNm7ciNGjR2Pr1q1YvXo1CgoK0Lt3b1y7ds28zoQJE/Drr7/ihx9+wMaNG3HhwgU88MAD5uVFRUXo168f8vPzsXnzZnz55ZdYtGgRpkyZYl7n1KlT6NevH7p37449e/Zg/PjxePLJJ/H777+79f0quZUIXvpUmWowZtzfHE90roM76lfRNEKwkIQY/n4GPNi2Bno1kfd0qxIWVCqH6uH2NfFg2xp2D2tg4uiQAyvGdUG/5tWwbExn1XW01IL1ujlxqdI9V/qc5Q3dYDDg7hYlTUJq831Z254zbw1BAf64t6Vy3pjl7Pa2SAPxAW1rYNHjtzttni8DYHU6msc6Kg+gyYDIjTxc1dSmVqRnC0DkAF0Pbrly5UrZ40WLFiE6OhrJycno2rUrMjMzMX/+fHzzzTfo0aMHAGDhwoVo3Lgxtm7dio4dO2LVqlU4dOgQ1qxZg5iYGLRq1QrTp0/Hiy++iKlTp8JoNGLu3LmoU6cOZs+eDQBo3Lgx/vzzT7z//vtISkpy+/uWMtXOKDXPSWtMptzTRHUb4cEByJIM6lcsCV5M21C6VVn2zjMG+CnWSmnlaE5T07gIzFEZT8qkWMPceJ005oyM6loX64+k41haDoCS5rnmNSLwxwvdUbViEO58Z73NbVSuYERi4xj4GYDIUO1d760FDaa3Z6258L1/tcTEJXsBAPOHtsPulAx8sv6E4ijf0s+UloD2npZxOHIxC8fTcxRrPgGgUWxFHEnNxj0t42TvpUejaEzv3wyd31pncz8mnm4+IteqF10Ry8d2ceoEx0SupuuaJkuZmZkAgKiokuaJ5ORkFBQUIDEx0bxOo0aNULNmTWzZsgUAsGXLFjRv3hwxMbdqUpKSkpCVlYWDBw+a15Fuw7SOaRtK8vLykJWVJfvnCoWSIQcsac21WfPcnfh8SDvz42JZ01HJ/wEK269cwbljBjmzec6SlpymOxuUDOhoK9emUgUjVk240/zY1IwQHxWK4ED/UsMpdLDokSdQEvx8MbQd5g1p5/TaE2vNiw+0udVzMtDfDxN7NcDK8XfgtXtKJ8kHSLLVbdXULR/bBR8/0hqLR3TAsE618duzypOrfjOiIz4c2Mo84XMFY0mPulf6NUb1yBDzemq7Yz2T65maYF0xDY69mlWP0PUAnESWvCZoKi4uxvjx49G5c2c0a9YMAJCamgqj0YjIyEjZujExMUhNTTWvIw2YTMtNy6ytk5WVhRs3biiWZ+bMmYiIiDD/i4+PL/N7VFIomXvOktZRjaMrBsua3yoGB5gDrqibeSMv9WmMqhWD8GKfRub1JiTa34PKGmcmglvWKgkAjWO1dZV/UDIkgxaWMcqcQW1kAWu/FtWw7rlbQZaWXkkhDowTZNqu1hjM7+Yo5I1iw1VqKm/9bW1Qzcc61kKz6iXDVERXDMbUe5uigUrvv6gKRtzXqrp5HKQtL/fEhue74baq8vwmwXokj3n5rsbY+1pvJFo0yRORbV4TNI0ePRoHDhzAd9995+miAAAmT56MzMxM87+zZ8+6ZD+VQgNxe+0oNFIICEw3Mnv5GQw4+HofHJqWZJ6gtmblUGx/uSeelvTOirCjWUmLypJE8kWPl32+OSkhBGLt6BU399G2tle6yTJIaRIXjpMz+91aDpQKCmy5r3Ucujaoisl9G9le2YJlTdOM+5uprGd9OwaDAT8/0wnfPNkBlRXmkRvbox6qVgzCmB717C6jSXhwIGorjJ+lFleq9Tok53LmBM9E5Ymuc5pMxowZg+XLl2PTpk2oUeNWLUFsbCzy8/ORkZEhq21KS0tDbGyseZ3t27fLtmfqXSddx7LHXVpaGsLDwxESEgIlQUFBCApyfVv8HfWr4o76pecJK+tg4CHG0jUdrk7CHdShJg5fzEKPRtE2x0p69e4m+HzTSTxyu7bpLuxNl+rTLBZHpvdBo1dL8uZaKMxxVi0iGBczc9GnaazVbTly3IIC/PHVEyXDRfzvQKpdr/Wz+KkTGaJcS6RlxPjWNSupLnuud0NM7NXArcnZIUZ/DOtUG3mFRXYFwURE7qDroEkIgbFjx+Lnn3/Ghg0bUKeOvBt827ZtERgYiLVr12LAgAEAgKNHjyIlJQUJCQkAgISEBMyYMQPp6emIji4Z32X16tUIDw9HkyZNzOv89ttvsm2vXr3avA1f0bZWJSSfuYp+LarZXtkFggL8MevBkkTyc1evK66z9rk7ceB8Ju5tGYcnOtfWfMM2DXg4rkc9fLTuhKbXBAf6I/mVRGTcKECNSqV7xS0f2wW7UzLQvZHyuEC3VamAk5euoYfKclfROmSCMxJsNQdMTmxtm6phkFIiIk/QddA0evRofPPNN/jll19QsWJFcw5SREQEQkJCEBERgeHDh2PixImIiopCeHg4xo4di4SEBHTs2BEA0Lt3bzRp0gSPPfYYZs2ahdTUVLzyyisYPXq0uaZo1KhR+OSTT/DCCy/giSeewLp167BkyRKsWLHCY+/dFX54KgHX8gsdmkjVEdZSe2pUCsWPT3cq1bOsbtUw1LWzqevdh1qib7OS2qAJvRrg0MUsrDmcrum1lcOCFJumTMus5X2sHN8V1/IKUckiYd5VAy3HRpTUevZsHINKoYGq05QsGNYOl7Lz7T6ORERkna5zmj799FNkZmaiW7duqFatmvnf999/b17n/fffx913340BAwaga9euiI2NxU8//WRe7u/vj+XLl8Pf3x8JCQl49NFHMWTIEEybNs28Tp06dbBixQqsXr0aLVu2xOzZs/HFF194fLgBaxy5L/v5GdwWMGnRtlYlh2/s0hqQB9vWME8+azAYVJOUnc0Y4FcqYHKFahHBeLZnfSQ1LQngwoICsOPfiarr92gUg3+1d03HBGcJD9b17zUiIkW6vnJp6YUUHByMOXPmYM6cOarr1KpVq1Tzm6Vu3bph9+7ddpeR1AWqjPrsDF8MbYcRX+3Ea1bGp/IUtUmB7XV/6+pIz87Fx4+0QZRFcBagYeR3PZr9UEss33cBI+903nQwRETuouugibzb5L6NsP9cJoZ1qu30bbevHYXdr/aymXMTXTEI6Y5MHOuAP1/sjiMXs9HTSXOj3dsyTjWfSkptShI9GtC2BgbYOeQDEZFeMGgiTRyZEb1GpVBseqG7C0pTQm9TbtSoFKqYUG6L6pG18fbG9ayP/ecy0L1h6d6VRETkfAyayKopdzfBR+uO480Hmnu6KJpVr3RrmAidxVVONdHOueaIiKhsGDSRVU90qYNhnWprGvNHL/7VLh4n/7mGLvWr4KUf93m6ODZ5z5ElIirfGDSRTd4UMAElc669erf+EsSJiMi7eU8GKcm4aiwgcj+1U+lNoSrnkiOi8oBBE/k0g1eFHkREpGcMmoiIiIg0YNDkpYxeOrghlca6MCIi78A7r5eZ91hbxIYH4/+G3+7pongFbxhywDIbqFeTGNSqHIqEupU9Uh4iIlLG3nNepnfTWPRuGuvpYpALzXusLYTwvl6LRES+jkET+bQAf+8LPAwGg1fUkBERlTdsniOfNmdQG0RXDMJ7/2rp6aIQEZGXY00T+bQWNSKx7eWeupunztdUDA70dBGIiFyONU3k8xgwuc5Hj7RGy/hITLuvqaeLQkTkcqxpIiKH3dsyDve2jPN0MYiI3II1TUQeFhzAryERkTfg1ZrIw958oDlqVw7FrAdbeLooRERkBZvniDysbtUwbJjU3dPFICIiG1jTRERERKQBgyYiIiIiDRg0EREREWnAoImIiIhIAwZNRERERBowaCIiIiLSgEETERERkQYMmoiIiIg0YNBEREREpAGDJiIiIiINGDQRERERacCgiYiIiEgDBk1EREREGjBoIiIiItIgwNMF8BVCCABAVlaWh0tCREREWpnu26b7uDUMmpwkOzsbABAfH+/hkhAREZG9srOzERERYXUdg9ASWpFNxcXFuHDhAipWrAiDweDp4pRZVlYW4uPjcfbsWYSHh3u6OGSB50f/eI70jedH/9x1joQQyM7ORlxcHPz8rGctsabJSfz8/FCjRg1PF8PpwsPDeUHRMZ4f/eM50jeeH/1zxzmyVcNkwkRwIiIiIg0YNBERERFpwKCJFAUFBeG1115DUFCQp4tCCnh+9I/nSN94fvRPj+eIieBEREREGrCmiYiIiEgDBk1EREREGjBoIiIiItKAQRMRERGRBgyavNj58+fx6KOPonLlyggJCUHz5s2xc+dO2TqHDx/Gvffei4iICFSoUAHt27dHSkqKeXlubi5Gjx6NypUrIywsDAMGDEBaWppsGykpKejXrx9CQ0MRHR2NSZMmobCwULbOhg0b0KZNGwQFBaFevXpYtGhRqfLOmTMHtWvXRnBwMDp06IDt27c772DokK3zk5OTgzFjxqBGjRoICQlBkyZNMHfuXNk2eH5cp3bt2jAYDKX+jR49GoC+jr2Wsvgaa+fnypUrGDt2LBo2bIiQkBDUrFkT48aNQ2ZmpmwbPD+uZes7ZCKEQN++fWEwGLB06VLZMq87R4K80pUrV0StWrXEsGHDxLZt28TJkyfF77//Lk6cOGFe58SJEyIqKkpMmjRJ7Nq1S5w4cUL88ssvIi0tzbzOqFGjRHx8vFi7dq3YuXOn6Nixo+jUqZN5eWFhoWjWrJlITEwUu3fvFr/99puoUqWKmDx5snmdkydPitDQUDFx4kRx6NAh8fHHHwt/f3+xcuVK8zrfffedMBqNYsGCBeLgwYNixIgRIjIyUlYWX6Ll/IwYMULUrVtXrF+/Xpw6dUp89tlnwt/fX/zyyy/mdXh+XCc9PV1cvHjR/G/16tUCgFi/fr0QQl/H3lZZfJG187N//37xwAMPiGXLlokTJ06ItWvXivr164sBAwaYX8/z43q2vkMm7733nujbt68AIH7++Wfz8954jhg0eakXX3xRdOnSxeo6Dz/8sHj00UdVl2dkZIjAwEDxww8/mJ87fPiwACC2bNkihBDit99+E35+fiI1NdW8zqeffirCw8NFXl6eEEKIF154QTRt2rTUvpOSksyPb7/9djF69Gjz46KiIhEXFydmzpyp4d16Hy3np2nTpmLatGmy59q0aSP+/e9/CyF4ftzt2WefFXXr1hXFxcW6OvZaylIeSM+PkiVLlgij0SgKCgqEEDw/nqB0jnbv3i2qV68uLl68WCpo8sZzxOY5L7Vs2TK0a9cODz30EKKjo9G6dWt8/vnn5uXFxcVYsWIFGjRogKSkJERHR6NDhw6yqtHk5GQUFBQgMTHR/FyjRo1Qs2ZNbNmyBQCwZcsWNG/eHDExMeZ1kpKSkJWVhYMHD5rXkW7DtI5pG/n5+UhOTpat4+fnh8TERPM6vsbW+QGATp06YdmyZTh//jyEEFi/fj2OHTuG3r17A+D5caf8/Hx8/fXXeOKJJ2AwGHR17LWUxddZnh8lmZmZCA8PR0BAyZSqPD/upXSOrl+/jkGDBmHOnDmIjY0t9RpvPEcMmrzUyZMn8emnn6J+/fr4/fff8fTTT2PcuHH48ssvAQDp6enIycnBW2+9hT59+mDVqlW4//778cADD2Djxo0AgNTUVBiNRkRGRsq2HRMTg9TUVPM60g+0ablpmbV1srKycOPGDVy6dAlFRUWK65i24WtsnR8A+Pjjj9GkSRPUqFEDRqMRffr0wZw5c9C1a1cAPD/utHTpUmRkZGDYsGEA9HXstZTF11meH0uXLl3C9OnTMXLkSPNzPD/upXSOJkyYgE6dOuG+++5TfI03nqMAu9Ym3SguLka7du3w5ptvAgBat26NAwcOYO7cuRg6dCiKi4sBAPfddx8mTJgAAGjVqhU2b96MuXPn4s477/RY2csDW+cHKAmatm7dimXLlqFWrVrYtGkTRo8ejbi4uFK/rMi15s+fj759+yIuLs7TRSEF1s5PVlYW+vXrhyZNmmDq1KnuLxwBKH2Oli1bhnXr1mH37t0eLplzsabJS1WrVg1NmjSRPde4cWNzz7gqVaogICDA6jqxsbHIz89HRkaGbJ20tDRzVWpsbGypHgamx7bWCQ8PR0hICKpUqQJ/f3/FdZSqbH2BrfNz48YNvPzyy3jvvfdwzz33oEWLFhgzZgwefvhhvPvuuwB4ftzlzJkzWLNmDZ588knzc3o69lrK4suUzo9JdnY2+vTpg4oVK+Lnn39GYGCgeRnPj/sonaN169bh77//RmRkJAICAszNpgMGDEC3bt0AeOc5YtDkpTp37oyjR4/Knjt27Bhq1aoFADAajWjfvr3Vddq2bYvAwECsXbvWvPzo0aNISUlBQkICACAhIQH79+9Henq6eZ3Vq1cjPDzcHBQkJCTItmFax7QNo9GItm3bytYpLi7G2rVrzev4Glvnp6CgAAUFBfDzk38F/f39zbWEPD/usXDhQkRHR6Nfv37m5/R07LWUxZcpnR+gpIapd+/eMBqNWLZsGYKDg2XLeX7cR+kcvfTSS9i3bx/27Nlj/gcA77//PhYuXAjAS8+RXWnjpBvbt28XAQEBYsaMGeL48eNi8eLFIjQ0VHz99dfmdX766ScRGBgo5s2bJ44fP27uqvnHH3+Y1xk1apSoWbOmWLdundi5c6dISEgQCQkJ5uWmLqG9e/cWe/bsEStXrhRVq1ZV7BI6adIkcfjwYTFnzhzFLqFBQUFi0aJF4tChQ2LkyJEiMjJS1mvCl2g5P3feeado2rSpWL9+vTh58qRYuHChCA4OFv/5z3/M6/D8uFZRUZGoWbOmePHFF0st09Oxt1UWX6V2fjIzM0WHDh1E8+bNxYkTJ2Td3gsLC4UQPD/uYu07ZAkqQw540zli0OTFfv31V9GsWTMRFBQkGjVqJObNm1dqnfnz54t69eqJ4OBg0bJlS7F06VLZ8hs3bohnnnlGVKpUSYSGhor7779fXLx4UbbO6dOnRd++fUVISIioUqWKeO6558zdek3Wr18vWrVqJYxGo7jtttvEwoULS5Xl448/FjVr1hRGo1HcfvvtYuvWrWU/CDpm6/xcvHhRDBs2TMTFxYng4GDRsGFDMXv2bFl3XZ4f1/r9998FAHH06NFSy/R07LWUxRepnZ/169cLAIr/Tp06ZV6P58f1rH2HLFkGTUJ43zky3HwjRERERGQFc5qIiIiINGDQRERERKQBgyYiIiIiDRg0EREREWnAoImIiIhIAwZNRERERBowaCIiIiLSgEETERERWTVjxgx06tQJoaGhiIyM1PQag8Gg+O+dd94ptW5eXh5atWoFg8FgnnIFAE6fPq24ja1bt9pV/l27dqFXr16IjIxE5cqVMXLkSOTk5Ni1DYBBExF5iQ0bNsBgMJSadJOInKNbt25YtGiR4rL8/Hw89NBDePrppzVv7+LFi7J/CxYsgMFgwIABA0qt+8ILLyAuLk51W2vWrJFtq23btprLceHCBSQmJqJevXrYtm0bVq5ciYMHD2LYsGGat2HCoImIdKlbt24YP368+XGnTp1w8eJFREREeKxMDNyovHr99dcxYcIENG/eXPNrYmNjZf9++eUXdO/eHbfddptsvf/9739YtWoV3n33XdVtVa5cWbatwMBA2fIvvvgCjRs3RnBwMBo1aoT//Oc/5mXLly9HYGAg5syZg4YNG6J9+/aYO3cufvzxR5w4cULz+wEYNBGRlzAajYiNjYXBYPB0UYjITmlpaVixYgWGDx9e6vkRI0bg//7v/xAaGqr6+nvvvRfR0dHo0qULli1bJlu2ePFiTJkyBTNmzMDhw4fx5ptv4tVXX8WXX34JoKTpz2g0ws/vVsgTEhICAPjzzz/teh8MmohId4YNG4aNGzfiww8/NOcwLFq0SFbLs2jRIkRGRmL58uVo2LAhQkND8eCDD+L69ev48ssvUbt2bVSqVAnjxo1DUVGRedt5eXl4/vnnUb16dVSoUAEdOnTAhg0bzMvPnDmDe+65B5UqVUKFChXQtGlT/Pbbbzh9+jS6d+8OAKhUqRIMBoO5en/lypXo0qWLOV/i7rvvxt9//23epikvY8mSJbjjjjsQEhKC9u3b49ixY9ixYwfatWuHsLAw9O3bF//884/sOPTv3x+vv/46qlativDwcIwaNQr5+fmuO/hELvDll1+iYsWKeOCBB8zPCSEwbNgwjBo1Cu3atVN8XVhYGGbPno0ffvgBK1asQJcuXdC/f39Z4PTaa69h9uzZeOCBB1CnTh088MADmDBhAj777DMAQI8ePZCamop33nkH+fn5uHr1Kl566SUAJU2IdrF7il8iIhfLyMgQCQkJYsSIEeLixYvi4sWLYs2aNQKAuHr1qhBCiIULF4rAwEDRq1cvsWvXLrFx40ZRuXJl0bt3b/Gvf/1LHDx4UPz666/CaDSK7777zrztJ598UnTq1Els2rRJnDhxQrzzzjsiKChIHDt2TAghRL9+/USvXr3Evn37xN9//y1+/fVXsXHjRlFYWCh+/PFH84zuFy9eFBkZGUIIIf773/+KH3/8URw/flzs3r1b3HPPPaJ58+aiqKhICCHEqVOnBADRqFEjsXLlSnHo0CHRsWNH0bZtW9GtWzfx559/il27dol69eqJUaNGmcs6dOhQERYWJh5++GFx4MABsXz5clG1alXx8ssvu+lMkC+bMWOGqFChgvmfn5+fCAoKkj135swZ2WsWLlwoIiIi7N5Xw4YNxZgxY2TPffjhh6Jz586isLBQCHHre7J7926r23rsscdEly5dhBBC5OTkCAAiJCREVu6goCARHR1tfs3ixYtFTEyM8Pf3F0ajUTz//PMiJiZGvPXWW3a9DwZNRKRLd955p3j22WfNj9evX18qaAIgTpw4YV7nqaeeEqGhoSI7O9v8XFJSknjqqaeEEEKcOXNG+Pv7i/Pnz8v21bNnTzF58mQhhBDNmzcXU6dOVSyTZRnU/PPPPwKA2L9/vxDi1s3giy++MK/z7bffCgBi7dq15udmzpwpGjZsaH48dOhQERUVJa5du2Z+7tNPPxVhYWHmgIzIUZcvXxbHjx83/7v99tvF22+/LXuuoKBA9hpHgqZNmzYJAGLPnj2y5++77z7h5+cn/P39zf8ACH9/fzFkyBDV7X3yySciNjZWCCFEamqqACC+/vprWbmPHz8uTp48Weq1qampIjs7W+Tk5Ag/Pz+xZMkSu95LgH31UkRE+hEaGoq6deuaH8fExKB27doICwuTPZeeng4A2L9/P4qKitCgQQPZdvLy8lC5cmUAwLhx4/D0009j1apVSExMxIABA9CiRQur5Th+/DimTJmCbdu24dKlSyguLgYApKSkoFmzZub1pNuJiYkBAFlirbSsJi1btpTleiQkJCAnJwdnz55FrVq1rJaLyJqoqChERUWZH4eEhCA6Ohr16tVz6n7mz5+Ptm3bomXLlrLnP/roI7zxxhvmxxcuXEBSUhK+//57dOjQQXV7e/bsQbVq1QCUfGfi4uJw8uRJDB482GZZTN+7BQsWIDg4GL169bLrvTBoIiKvZdmDxmAwKD5nCmJycnLg7++P5ORk+Pv7y9YzBVpPPvkkkpKSsGLFCqxatQozZ87E7NmzMXbsWNVy3HPPPahVqxY+//xzxMXFobi4GM2aNSuVeyQtmymh3fI5U1mJ9CQlJQVXrlxBSkoKioqKzGMp1atXz/zdadSoEWbOnIn777/f/LqsrCz88MMPmD17dqlt1qxZU/bYtJ26deuiRo0aAEpyoYxGI1q3bg0A+Omnn7BgwQJ88cUX5te9/vrrGDduHCIiItCnTx/k5eVh586duHr1KiZOnAgA+OSTT9CpUyeEhYVh9erVmDRpEt566y3NY06ZMGgiIl0yGo2yBG5naN26NYqKipCeno477rhDdb34+HiMGjUKo0aNwuTJk/H5559j7NixMBqNACAr1+XLl3H06FF8/vnn5m3a2yPHmr179+LGjRvm3j5bt25FWFgY4uPjnbYPIlumTJli7o0GwBzErF+/Ht26dQMAHD16FJmZmbLXfffddxBC4JFHHnF439OnT8eZM2cQEBCARo0a4fvvv8eDDz5oXv7kk08iNDQU77zzDiZNmoQKFSqgefPmsiFLtm/fjtdeew05OTlo1KgRPvvsMzz22GN2l4VBExHpUu3atbFt2zacPn0aYWFhTqmBadCgAQYPHowhQ4Zg9uzZaN26Nf755x+sXbsWLVq0QL9+/TB+/Hj07dsXDRo0wNWrV7F+/Xo0btwYAFCrVi0YDAYsX74cd911F0JCQlCpUiVUrlwZ8+bNQ7Vq1ZCSkmLumeMM+fn5GD58OF555RWcPn0ar732GsaMGSPrPk3kDNJepJYWLVqkOvCliRCi1HMjR47EyJEjNe2/du3apbYxdOhQDB061OZrBw0ahEGDBqku/+qrrzSVwRZ+64hIl55//nn4+/ujSZMmqFq1KlJSUpyy3YULF2LIkCF47rnn0LBhQ/Tv3x87duwwNxUUFRVh9OjRaNy4Mfr06YMGDRqYB8qrXr06Xn/9dbz00kuIiYkxBy/fffcdkpOT0axZM0yYMEFxmghH9ezZE/Xr10fXrl3x8MMP495778XUqVOdtn0i0s4glEJDIiLyuGHDhiEjIwNLly71dFGICKxpIiIiItKEQRMRERGRBmyeIyIiItKANU1EREREGjBoIiIiItKAQRMRERGRBgyaiIiIiDRg0ERERESkAYMmIiIiIg0YNBERERFpwKCJiIiISIP/B+1YT/DJpS+QAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn\n",
    "\n",
    "apmid = 10\n",
    "data = load_in_file(f'/app/jupyter/aiops/aiopschallengedata2025/sample/abnormal/case1/./metric-parquet/apm/pod/pod_{apms[apmid]}_2025-04-28.parquet')\n",
    "delnullcol(data)\n",
    "data['timestamp'] = data['time'].apply(lambda x:transtime(x))\n",
    "seaborn.lineplot( data[['timestamp','rrt']],x='timestamp',y='rrt')\n",
    "data.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "ed19ab95-210f-41e8-a015-7ef7cb1106a9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0       1745654400\n",
       "1       1745654460\n",
       "2       1745654520\n",
       "3       1745654580\n",
       "4       1745654640\n",
       "           ...    \n",
       "1434    1745740500\n",
       "1435    1745740560\n",
       "1436    1745740620\n",
       "1437    1745740680\n",
       "1438    1745740740\n",
       "Name: timestamp, Length: 1439, dtype: int64"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['timestamp']"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "51ab8abc-b937-4b1e-af04-f079c68778ae",
   "metadata": {},
   "source": [
    "## infra - node"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 312,
   "id": "ad5e83fc-6e16-43f1-b0a0-d797e4387b31",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 347,
   "id": "7bd44681-ca17-4957-8e8c-db9aa50ef3de",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 348,
   "id": "8340b779-45b6-4519-b8bb-a9e4df5a7f74",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>timestamp</th>\n",
       "      <th>kubernetes_node</th>\n",
       "      <th>instance</th>\n",
       "      <th>node_cpu_usage_rate</th>\n",
       "      <th>node_disk_read_bytes_total</th>\n",
       "      <th>node_disk_read_time_seconds_total</th>\n",
       "      <th>node_disk_write_time_seconds_total</th>\n",
       "      <th>node_disk_written_bytes_total</th>\n",
       "      <th>node_filesystem_free_bytes</th>\n",
       "      <th>node_filesystem_size_bytes</th>\n",
       "      <th>node_memory_MemAvailable_bytes</th>\n",
       "      <th>node_memory_MemTotal_bytes</th>\n",
       "      <th>node_memory_usage_rate</th>\n",
       "      <th>node_network_receive_bytes_total</th>\n",
       "      <th>node_network_receive_packets_total</th>\n",
       "      <th>node_network_transmit_bytes_total</th>\n",
       "      <th>node_network_transmit_packets_total</th>\n",
       "      <th>node_sockstat_TCP_inuse</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1745654400</td>\n",
       "      <td>aiops-k8s-04</td>\n",
       "      <td>223.193.36.109</td>\n",
       "      <td>17.48</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>34372.27</td>\n",
       "      <td>16139026432</td>\n",
       "      <td>25891373056</td>\n",
       "      <td>10030567424</td>\n",
       "      <td>16769417216</td>\n",
       "      <td>37.60</td>\n",
       "      <td>109.47</td>\n",
       "      <td>1.07</td>\n",
       "      <td>3141.80</td>\n",
       "      <td>1.07</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1745654400</td>\n",
       "      <td>aiops-k8s-05</td>\n",
       "      <td>223.193.36.113</td>\n",
       "      <td>16.00</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>66082.13</td>\n",
       "      <td>16060575744</td>\n",
       "      <td>25891373056</td>\n",
       "      <td>11687104512</td>\n",
       "      <td>16769429504</td>\n",
       "      <td>29.44</td>\n",
       "      <td>162.47</td>\n",
       "      <td>1.60</td>\n",
       "      <td>4820.20</td>\n",
       "      <td>1.60</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1745654400</td>\n",
       "      <td>k8s-master3</td>\n",
       "      <td>223.193.36.124</td>\n",
       "      <td>11.76</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.02</td>\n",
       "      <td>138649.60</td>\n",
       "      <td>8166813696</td>\n",
       "      <td>25891373056</td>\n",
       "      <td>12180217856</td>\n",
       "      <td>16769417216</td>\n",
       "      <td>32.68</td>\n",
       "      <td>91.87</td>\n",
       "      <td>0.80</td>\n",
       "      <td>2139.87</td>\n",
       "      <td>0.80</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1745654400</td>\n",
       "      <td>k8s-master2</td>\n",
       "      <td>223.193.36.126</td>\n",
       "      <td>11.36</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.02</td>\n",
       "      <td>126327.47</td>\n",
       "      <td>8841166848</td>\n",
       "      <td>25891373056</td>\n",
       "      <td>10725388288</td>\n",
       "      <td>16769425408</td>\n",
       "      <td>44.28</td>\n",
       "      <td>124.27</td>\n",
       "      <td>1.00</td>\n",
       "      <td>3253.73</td>\n",
       "      <td>1.00</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1745654400</td>\n",
       "      <td>k8s-master1</td>\n",
       "      <td>223.193.36.127</td>\n",
       "      <td>13.59</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.01</td>\n",
       "      <td>1022429.87</td>\n",
       "      <td>4831272960</td>\n",
       "      <td>25891373056</td>\n",
       "      <td>11455066112</td>\n",
       "      <td>16769429504</td>\n",
       "      <td>36.82</td>\n",
       "      <td>97.07</td>\n",
       "      <td>0.87</td>\n",
       "      <td>2290.00</td>\n",
       "      <td>0.87</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15824</th>\n",
       "      <td>1745740740</td>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>223.193.36.129</td>\n",
       "      <td>13.90</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>32563.20</td>\n",
       "      <td>10658271232</td>\n",
       "      <td>25891373056</td>\n",
       "      <td>15171813376</td>\n",
       "      <td>33655685120</td>\n",
       "      <td>52.69</td>\n",
       "      <td>164.07</td>\n",
       "      <td>1.60</td>\n",
       "      <td>5115.27</td>\n",
       "      <td>1.60</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15825</th>\n",
       "      <td>1745740740</td>\n",
       "      <td>aiops-k8s-08</td>\n",
       "      <td>223.193.36.130</td>\n",
       "      <td>20.46</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>158549.33</td>\n",
       "      <td>9197617152</td>\n",
       "      <td>25891373056</td>\n",
       "      <td>21591388160</td>\n",
       "      <td>33655668736</td>\n",
       "      <td>38.25</td>\n",
       "      <td>118.40</td>\n",
       "      <td>1.20</td>\n",
       "      <td>3734.73</td>\n",
       "      <td>1.20</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15826</th>\n",
       "      <td>1745740740</td>\n",
       "      <td>aiops-k8s-01</td>\n",
       "      <td>223.193.36.56</td>\n",
       "      <td>17.76</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>89941.33</td>\n",
       "      <td>6916386816</td>\n",
       "      <td>25891373056</td>\n",
       "      <td>6045954048</td>\n",
       "      <td>16746553344</td>\n",
       "      <td>66.57</td>\n",
       "      <td>109.60</td>\n",
       "      <td>1.07</td>\n",
       "      <td>3240.67</td>\n",
       "      <td>1.07</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15827</th>\n",
       "      <td>1745740740</td>\n",
       "      <td>aiops-k8s-02</td>\n",
       "      <td>223.193.36.88</td>\n",
       "      <td>11.54</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>3515.73</td>\n",
       "      <td>15785639936</td>\n",
       "      <td>25891373056</td>\n",
       "      <td>12767424512</td>\n",
       "      <td>16769429504</td>\n",
       "      <td>20.95</td>\n",
       "      <td>103.47</td>\n",
       "      <td>1.00</td>\n",
       "      <td>2431.53</td>\n",
       "      <td>1.00</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15828</th>\n",
       "      <td>1745740740</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>223.193.36.89</td>\n",
       "      <td>23.76</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>48059.73</td>\n",
       "      <td>16121942016</td>\n",
       "      <td>25891373056</td>\n",
       "      <td>8664858624</td>\n",
       "      <td>16769421312</td>\n",
       "      <td>48.99</td>\n",
       "      <td>120.93</td>\n",
       "      <td>1.27</td>\n",
       "      <td>3388.93</td>\n",
       "      <td>1.27</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>15829 rows × 18 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        timestamp kubernetes_node        instance  node_cpu_usage_rate  \\\n",
       "0      1745654400    aiops-k8s-04  223.193.36.109                17.48   \n",
       "1      1745654400    aiops-k8s-05  223.193.36.113                16.00   \n",
       "2      1745654400     k8s-master3  223.193.36.124                11.76   \n",
       "3      1745654400     k8s-master2  223.193.36.126                11.36   \n",
       "4      1745654400     k8s-master1  223.193.36.127                13.59   \n",
       "...           ...             ...             ...                  ...   \n",
       "15824  1745740740    aiops-k8s-07  223.193.36.129                13.90   \n",
       "15825  1745740740    aiops-k8s-08  223.193.36.130                20.46   \n",
       "15826  1745740740    aiops-k8s-01   223.193.36.56                17.76   \n",
       "15827  1745740740    aiops-k8s-02   223.193.36.88                11.54   \n",
       "15828  1745740740    aiops-k8s-03   223.193.36.89                23.76   \n",
       "\n",
       "       node_disk_read_bytes_total  node_disk_read_time_seconds_total  \\\n",
       "0                             0.0                                0.0   \n",
       "1                             0.0                                0.0   \n",
       "2                             0.0                                0.0   \n",
       "3                             0.0                                0.0   \n",
       "4                             0.0                                0.0   \n",
       "...                           ...                                ...   \n",
       "15824                         0.0                                0.0   \n",
       "15825                         0.0                                0.0   \n",
       "15826                         0.0                                0.0   \n",
       "15827                         0.0                                0.0   \n",
       "15828                         0.0                                0.0   \n",
       "\n",
       "       node_disk_write_time_seconds_total  node_disk_written_bytes_total  \\\n",
       "0                                    0.00                       34372.27   \n",
       "1                                    0.00                       66082.13   \n",
       "2                                    0.02                      138649.60   \n",
       "3                                    0.02                      126327.47   \n",
       "4                                    0.01                     1022429.87   \n",
       "...                                   ...                            ...   \n",
       "15824                                0.00                       32563.20   \n",
       "15825                                0.00                      158549.33   \n",
       "15826                                0.00                       89941.33   \n",
       "15827                                0.00                        3515.73   \n",
       "15828                                0.00                       48059.73   \n",
       "\n",
       "       node_filesystem_free_bytes  node_filesystem_size_bytes  \\\n",
       "0                     16139026432                 25891373056   \n",
       "1                     16060575744                 25891373056   \n",
       "2                      8166813696                 25891373056   \n",
       "3                      8841166848                 25891373056   \n",
       "4                      4831272960                 25891373056   \n",
       "...                           ...                         ...   \n",
       "15824                 10658271232                 25891373056   \n",
       "15825                  9197617152                 25891373056   \n",
       "15826                  6916386816                 25891373056   \n",
       "15827                 15785639936                 25891373056   \n",
       "15828                 16121942016                 25891373056   \n",
       "\n",
       "       node_memory_MemAvailable_bytes  node_memory_MemTotal_bytes  \\\n",
       "0                         10030567424                 16769417216   \n",
       "1                         11687104512                 16769429504   \n",
       "2                         12180217856                 16769417216   \n",
       "3                         10725388288                 16769425408   \n",
       "4                         11455066112                 16769429504   \n",
       "...                               ...                         ...   \n",
       "15824                     15171813376                 33655685120   \n",
       "15825                     21591388160                 33655668736   \n",
       "15826                      6045954048                 16746553344   \n",
       "15827                     12767424512                 16769429504   \n",
       "15828                      8664858624                 16769421312   \n",
       "\n",
       "       node_memory_usage_rate  node_network_receive_bytes_total  \\\n",
       "0                       37.60                            109.47   \n",
       "1                       29.44                            162.47   \n",
       "2                       32.68                             91.87   \n",
       "3                       44.28                            124.27   \n",
       "4                       36.82                             97.07   \n",
       "...                       ...                               ...   \n",
       "15824                   52.69                            164.07   \n",
       "15825                   38.25                            118.40   \n",
       "15826                   66.57                            109.60   \n",
       "15827                   20.95                            103.47   \n",
       "15828                   48.99                            120.93   \n",
       "\n",
       "       node_network_receive_packets_total  node_network_transmit_bytes_total  \\\n",
       "0                                    1.07                            3141.80   \n",
       "1                                    1.60                            4820.20   \n",
       "2                                    0.80                            2139.87   \n",
       "3                                    1.00                            3253.73   \n",
       "4                                    0.87                            2290.00   \n",
       "...                                   ...                                ...   \n",
       "15824                                1.60                            5115.27   \n",
       "15825                                1.20                            3734.73   \n",
       "15826                                1.07                            3240.67   \n",
       "15827                                1.00                            2431.53   \n",
       "15828                                1.27                            3388.93   \n",
       "\n",
       "       node_network_transmit_packets_total  node_sockstat_TCP_inuse  \n",
       "0                                     1.07                      0.0  \n",
       "1                                     1.60                      0.0  \n",
       "2                                     0.80                      0.0  \n",
       "3                                     1.00                      0.0  \n",
       "4                                     0.87                      0.0  \n",
       "...                                    ...                      ...  \n",
       "15824                                 1.60                      0.0  \n",
       "15825                                 1.20                      0.0  \n",
       "15826                                 1.07                      0.0  \n",
       "15827                                 1.00                      0.0  \n",
       "15828                                 1.27                      0.0  \n",
       "\n",
       "[15829 rows x 18 columns]"
      ]
     },
     "execution_count": 348,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "read_node_infra()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 318,
   "id": "a1b49126-4065-4818-ab63-457572713a18",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "instance\n",
       "223.193.36.109    Axes(0.125,0.11;0.775x0.77)\n",
       "223.193.36.113    Axes(0.125,0.11;0.775x0.77)\n",
       "223.193.36.124    Axes(0.125,0.11;0.775x0.77)\n",
       "223.193.36.126    Axes(0.125,0.11;0.775x0.77)\n",
       "223.193.36.127    Axes(0.125,0.11;0.775x0.77)\n",
       "223.193.36.128    Axes(0.125,0.11;0.775x0.77)\n",
       "223.193.36.129    Axes(0.125,0.11;0.775x0.77)\n",
       "223.193.36.130    Axes(0.125,0.11;0.775x0.77)\n",
       "223.193.36.56     Axes(0.125,0.11;0.775x0.77)\n",
       "223.193.36.88     Axes(0.125,0.11;0.775x0.77)\n",
       "223.193.36.89     Axes(0.125,0.11;0.775x0.77)\n",
       "Name: node_network_receive_packets_total, dtype: object"
      ]
     },
     "execution_count": 318,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "node_indics.groupby('instance')[indics[-4]].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 232,
   "id": "64e6d6af-957f-4f1f-85a6-e913ac3ed1e1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>time_x</th>\n",
       "      <th>instance_x</th>\n",
       "      <th>kpi_key_x</th>\n",
       "      <th>kpi_name_x</th>\n",
       "      <th>kubernetes_node</th>\n",
       "      <th>node_memory_MemTotal_bytes</th>\n",
       "      <th>object_type_x</th>\n",
       "      <th>timestamp</th>\n",
       "      <th>time_y</th>\n",
       "      <th>instance_y</th>\n",
       "      <th>kpi_key_y</th>\n",
       "      <th>kpi_name_y</th>\n",
       "      <th>node_memory_usage_rate</th>\n",
       "      <th>object_type_y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2025-04-26 16:00:00+00:00</td>\n",
       "      <td>223.193.36.109</td>\n",
       "      <td>node_memory_MemTotal_bytes</td>\n",
       "      <td>内存总大小</td>\n",
       "      <td>aiops-k8s-04</td>\n",
       "      <td>16769417216</td>\n",
       "      <td>node</td>\n",
       "      <td>1745654400</td>\n",
       "      <td>2025-04-26 16:00:00+00:00</td>\n",
       "      <td>223.193.36.109</td>\n",
       "      <td>node_memory_usage_rate</td>\n",
       "      <td>内存使用率</td>\n",
       "      <td>37.60</td>\n",
       "      <td>node</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2025-04-26 16:00:00+00:00</td>\n",
       "      <td>223.193.36.113</td>\n",
       "      <td>node_memory_MemTotal_bytes</td>\n",
       "      <td>内存总大小</td>\n",
       "      <td>aiops-k8s-05</td>\n",
       "      <td>16769429504</td>\n",
       "      <td>node</td>\n",
       "      <td>1745654400</td>\n",
       "      <td>2025-04-26 16:00:00+00:00</td>\n",
       "      <td>223.193.36.113</td>\n",
       "      <td>node_memory_usage_rate</td>\n",
       "      <td>内存使用率</td>\n",
       "      <td>29.44</td>\n",
       "      <td>node</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2025-04-26 16:00:00+00:00</td>\n",
       "      <td>223.193.36.124</td>\n",
       "      <td>node_memory_MemTotal_bytes</td>\n",
       "      <td>内存总大小</td>\n",
       "      <td>k8s-master3</td>\n",
       "      <td>16769417216</td>\n",
       "      <td>node</td>\n",
       "      <td>1745654400</td>\n",
       "      <td>2025-04-26 16:00:00+00:00</td>\n",
       "      <td>223.193.36.124</td>\n",
       "      <td>node_memory_usage_rate</td>\n",
       "      <td>内存使用率</td>\n",
       "      <td>32.68</td>\n",
       "      <td>node</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2025-04-26 16:00:00+00:00</td>\n",
       "      <td>223.193.36.126</td>\n",
       "      <td>node_memory_MemTotal_bytes</td>\n",
       "      <td>内存总大小</td>\n",
       "      <td>k8s-master2</td>\n",
       "      <td>16769425408</td>\n",
       "      <td>node</td>\n",
       "      <td>1745654400</td>\n",
       "      <td>2025-04-26 16:00:00+00:00</td>\n",
       "      <td>223.193.36.126</td>\n",
       "      <td>node_memory_usage_rate</td>\n",
       "      <td>内存使用率</td>\n",
       "      <td>44.28</td>\n",
       "      <td>node</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2025-04-26 16:00:00+00:00</td>\n",
       "      <td>223.193.36.127</td>\n",
       "      <td>node_memory_MemTotal_bytes</td>\n",
       "      <td>内存总大小</td>\n",
       "      <td>k8s-master1</td>\n",
       "      <td>16769429504</td>\n",
       "      <td>node</td>\n",
       "      <td>1745654400</td>\n",
       "      <td>2025-04-26 16:00:00+00:00</td>\n",
       "      <td>223.193.36.127</td>\n",
       "      <td>node_memory_usage_rate</td>\n",
       "      <td>内存使用率</td>\n",
       "      <td>36.82</td>\n",
       "      <td>node</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15824</th>\n",
       "      <td>2025-04-27 15:59:00+00:00</td>\n",
       "      <td>223.193.36.129</td>\n",
       "      <td>node_memory_MemTotal_bytes</td>\n",
       "      <td>内存总大小</td>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>33655685120</td>\n",
       "      <td>node</td>\n",
       "      <td>1745740740</td>\n",
       "      <td>2025-04-27 15:59:00+00:00</td>\n",
       "      <td>223.193.36.129</td>\n",
       "      <td>node_memory_usage_rate</td>\n",
       "      <td>内存使用率</td>\n",
       "      <td>52.69</td>\n",
       "      <td>node</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15825</th>\n",
       "      <td>2025-04-27 15:59:00+00:00</td>\n",
       "      <td>223.193.36.130</td>\n",
       "      <td>node_memory_MemTotal_bytes</td>\n",
       "      <td>内存总大小</td>\n",
       "      <td>aiops-k8s-08</td>\n",
       "      <td>33655668736</td>\n",
       "      <td>node</td>\n",
       "      <td>1745740740</td>\n",
       "      <td>2025-04-27 15:59:00+00:00</td>\n",
       "      <td>223.193.36.130</td>\n",
       "      <td>node_memory_usage_rate</td>\n",
       "      <td>内存使用率</td>\n",
       "      <td>38.25</td>\n",
       "      <td>node</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15826</th>\n",
       "      <td>2025-04-27 15:59:00+00:00</td>\n",
       "      <td>223.193.36.56</td>\n",
       "      <td>node_memory_MemTotal_bytes</td>\n",
       "      <td>内存总大小</td>\n",
       "      <td>aiops-k8s-01</td>\n",
       "      <td>16746553344</td>\n",
       "      <td>node</td>\n",
       "      <td>1745740740</td>\n",
       "      <td>2025-04-27 15:59:00+00:00</td>\n",
       "      <td>223.193.36.56</td>\n",
       "      <td>node_memory_usage_rate</td>\n",
       "      <td>内存使用率</td>\n",
       "      <td>66.57</td>\n",
       "      <td>node</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15827</th>\n",
       "      <td>2025-04-27 15:59:00+00:00</td>\n",
       "      <td>223.193.36.88</td>\n",
       "      <td>node_memory_MemTotal_bytes</td>\n",
       "      <td>内存总大小</td>\n",
       "      <td>aiops-k8s-02</td>\n",
       "      <td>16769429504</td>\n",
       "      <td>node</td>\n",
       "      <td>1745740740</td>\n",
       "      <td>2025-04-27 15:59:00+00:00</td>\n",
       "      <td>223.193.36.88</td>\n",
       "      <td>node_memory_usage_rate</td>\n",
       "      <td>内存使用率</td>\n",
       "      <td>20.95</td>\n",
       "      <td>node</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15828</th>\n",
       "      <td>2025-04-27 15:59:00+00:00</td>\n",
       "      <td>223.193.36.89</td>\n",
       "      <td>node_memory_MemTotal_bytes</td>\n",
       "      <td>内存总大小</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>16769421312</td>\n",
       "      <td>node</td>\n",
       "      <td>1745740740</td>\n",
       "      <td>2025-04-27 15:59:00+00:00</td>\n",
       "      <td>223.193.36.89</td>\n",
       "      <td>node_memory_usage_rate</td>\n",
       "      <td>内存使用率</td>\n",
       "      <td>48.99</td>\n",
       "      <td>node</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>15829 rows × 14 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                         time_x      instance_x                   kpi_key_x  \\\n",
       "0     2025-04-26 16:00:00+00:00  223.193.36.109  node_memory_MemTotal_bytes   \n",
       "1     2025-04-26 16:00:00+00:00  223.193.36.113  node_memory_MemTotal_bytes   \n",
       "2     2025-04-26 16:00:00+00:00  223.193.36.124  node_memory_MemTotal_bytes   \n",
       "3     2025-04-26 16:00:00+00:00  223.193.36.126  node_memory_MemTotal_bytes   \n",
       "4     2025-04-26 16:00:00+00:00  223.193.36.127  node_memory_MemTotal_bytes   \n",
       "...                         ...             ...                         ...   \n",
       "15824 2025-04-27 15:59:00+00:00  223.193.36.129  node_memory_MemTotal_bytes   \n",
       "15825 2025-04-27 15:59:00+00:00  223.193.36.130  node_memory_MemTotal_bytes   \n",
       "15826 2025-04-27 15:59:00+00:00   223.193.36.56  node_memory_MemTotal_bytes   \n",
       "15827 2025-04-27 15:59:00+00:00   223.193.36.88  node_memory_MemTotal_bytes   \n",
       "15828 2025-04-27 15:59:00+00:00   223.193.36.89  node_memory_MemTotal_bytes   \n",
       "\n",
       "      kpi_name_x kubernetes_node  node_memory_MemTotal_bytes object_type_x  \\\n",
       "0          内存总大小    aiops-k8s-04                 16769417216          node   \n",
       "1          内存总大小    aiops-k8s-05                 16769429504          node   \n",
       "2          内存总大小     k8s-master3                 16769417216          node   \n",
       "3          内存总大小     k8s-master2                 16769425408          node   \n",
       "4          内存总大小     k8s-master1                 16769429504          node   \n",
       "...          ...             ...                         ...           ...   \n",
       "15824      内存总大小    aiops-k8s-07                 33655685120          node   \n",
       "15825      内存总大小    aiops-k8s-08                 33655668736          node   \n",
       "15826      内存总大小    aiops-k8s-01                 16746553344          node   \n",
       "15827      内存总大小    aiops-k8s-02                 16769429504          node   \n",
       "15828      内存总大小    aiops-k8s-03                 16769421312          node   \n",
       "\n",
       "        timestamp                    time_y      instance_y  \\\n",
       "0      1745654400 2025-04-26 16:00:00+00:00  223.193.36.109   \n",
       "1      1745654400 2025-04-26 16:00:00+00:00  223.193.36.113   \n",
       "2      1745654400 2025-04-26 16:00:00+00:00  223.193.36.124   \n",
       "3      1745654400 2025-04-26 16:00:00+00:00  223.193.36.126   \n",
       "4      1745654400 2025-04-26 16:00:00+00:00  223.193.36.127   \n",
       "...           ...                       ...             ...   \n",
       "15824  1745740740 2025-04-27 15:59:00+00:00  223.193.36.129   \n",
       "15825  1745740740 2025-04-27 15:59:00+00:00  223.193.36.130   \n",
       "15826  1745740740 2025-04-27 15:59:00+00:00   223.193.36.56   \n",
       "15827  1745740740 2025-04-27 15:59:00+00:00   223.193.36.88   \n",
       "15828  1745740740 2025-04-27 15:59:00+00:00   223.193.36.89   \n",
       "\n",
       "                    kpi_key_y kpi_name_y  node_memory_usage_rate object_type_y  \n",
       "0      node_memory_usage_rate      内存使用率                   37.60          node  \n",
       "1      node_memory_usage_rate      内存使用率                   29.44          node  \n",
       "2      node_memory_usage_rate      内存使用率                   32.68          node  \n",
       "3      node_memory_usage_rate      内存使用率                   44.28          node  \n",
       "4      node_memory_usage_rate      内存使用率                   36.82          node  \n",
       "...                       ...        ...                     ...           ...  \n",
       "15824  node_memory_usage_rate      内存使用率                   52.69          node  \n",
       "15825  node_memory_usage_rate      内存使用率                   38.25          node  \n",
       "15826  node_memory_usage_rate      内存使用率                   66.57          node  \n",
       "15827  node_memory_usage_rate      内存使用率                   20.95          node  \n",
       "15828  node_memory_usage_rate      内存使用率                   48.99          node  \n",
       "\n",
       "[15829 rows x 14 columns]"
      ]
     },
     "execution_count": 232,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.merge(data,data2,on=['timestamp','kubernetes_node'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "98d05dea-ecf4-4eac-a229-4abec0d18e26",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 233,
   "id": "1f71e732-5f5f-43c3-afe0-397d1a501964",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>kubernetes_node</th>\n",
       "      <th>instance</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>aiops-k8s-04</td>\n",
       "      <td>223.193.36.109</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>aiops-k8s-05</td>\n",
       "      <td>223.193.36.113</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>k8s-master3</td>\n",
       "      <td>223.193.36.124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>k8s-master2</td>\n",
       "      <td>223.193.36.126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>k8s-master1</td>\n",
       "      <td>223.193.36.127</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>aiops-k8s-06</td>\n",
       "      <td>223.193.36.128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>223.193.36.129</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>aiops-k8s-08</td>\n",
       "      <td>223.193.36.130</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>aiops-k8s-01</td>\n",
       "      <td>223.193.36.56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>aiops-k8s-02</td>\n",
       "      <td>223.193.36.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>223.193.36.89</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   kubernetes_node        instance\n",
       "0     aiops-k8s-04  223.193.36.109\n",
       "1     aiops-k8s-05  223.193.36.113\n",
       "2      k8s-master3  223.193.36.124\n",
       "3      k8s-master2  223.193.36.126\n",
       "4      k8s-master1  223.193.36.127\n",
       "5     aiops-k8s-06  223.193.36.128\n",
       "6     aiops-k8s-07  223.193.36.129\n",
       "7     aiops-k8s-08  223.193.36.130\n",
       "8     aiops-k8s-01   223.193.36.56\n",
       "9     aiops-k8s-02   223.193.36.88\n",
       "10    aiops-k8s-03   223.193.36.89"
      ]
     },
     "execution_count": 233,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[['kubernetes_node','instance']].drop_duplicates()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e74367d5-d97d-4ae4-9f36-6b8cc14b06c7",
   "metadata": {},
   "source": [
    "## infra -pod"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 333,
   "id": "97848132-5dcd-4b9a-8ba6-ed2cc1db7a11",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 342,
   "id": "d53f1fd5-4c06-4d3b-96b4-ba1eb68b4197",
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 344,
   "id": "6b91acf2-1caf-4797-9d4a-1b94100f24ab",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n",
      "/tmp/ipykernel_23563/2682509419.py:5: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future\n",
      "  transtime = lambda x: int((np.datetime64(x) - np.datetime64('1970-01-01 00:00:00')) / np.timedelta64(1, 's'))-60*60*8\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>timestamp</th>\n",
       "      <th>instance</th>\n",
       "      <th>pod</th>\n",
       "      <th>pod_cpu_usage</th>\n",
       "      <th>pod_memory_working_set_bytes</th>\n",
       "      <th>pod_network_receive_bytes</th>\n",
       "      <th>pod_network_receive_packets</th>\n",
       "      <th>pod_network_transmit_bytes</th>\n",
       "      <th>pod_network_transmit_packets</th>\n",
       "      <th>pod_processes</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1745654400</td>\n",
       "      <td>aiops-k8s-01</td>\n",
       "      <td>cartservice-1</td>\n",
       "      <td>0.00</td>\n",
       "      <td>915297.93</td>\n",
       "      <td>209.05</td>\n",
       "      <td>2.34</td>\n",
       "      <td>400.61</td>\n",
       "      <td>2.19</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1745654400</td>\n",
       "      <td>aiops-k8s-01</td>\n",
       "      <td>emailservice-2</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1380832.20</td>\n",
       "      <td>205.18</td>\n",
       "      <td>1.56</td>\n",
       "      <td>187.09</td>\n",
       "      <td>1.50</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1745654400</td>\n",
       "      <td>aiops-k8s-01</td>\n",
       "      <td>paymentservice-2</td>\n",
       "      <td>0.00</td>\n",
       "      <td>392.94</td>\n",
       "      <td>35.52</td>\n",
       "      <td>0.40</td>\n",
       "      <td>29.41</td>\n",
       "      <td>0.33</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1745654400</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>adservice-1</td>\n",
       "      <td>0.00</td>\n",
       "      <td>8149689.09</td>\n",
       "      <td>95.59</td>\n",
       "      <td>0.39</td>\n",
       "      <td>155.72</td>\n",
       "      <td>0.73</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1745654400</td>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>cartservice-0</td>\n",
       "      <td>0.01</td>\n",
       "      <td>1984414.34</td>\n",
       "      <td>678.21</td>\n",
       "      <td>6.99</td>\n",
       "      <td>2325.50</td>\n",
       "      <td>6.17</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44578</th>\n",
       "      <td>1745740740</td>\n",
       "      <td>aiops-k8s-08</td>\n",
       "      <td>adservice-0</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1009.74</td>\n",
       "      <td>8.81</td>\n",
       "      <td>1802.17</td>\n",
       "      <td>7.88</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44579</th>\n",
       "      <td>1745740740</td>\n",
       "      <td>aiops-k8s-08</td>\n",
       "      <td>paymentservice-1</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44580</th>\n",
       "      <td>1745740740</td>\n",
       "      <td>aiops-k8s-08</td>\n",
       "      <td>recommendationservice-2</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44581</th>\n",
       "      <td>1745740740</td>\n",
       "      <td>aiops-k8s-08</td>\n",
       "      <td>redis-cart-0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>633.58</td>\n",
       "      <td>6.62</td>\n",
       "      <td>377.01</td>\n",
       "      <td>3.49</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44582</th>\n",
       "      <td>1745740740</td>\n",
       "      <td>aiops-k8s-08</td>\n",
       "      <td>shippingservice-1</td>\n",
       "      <td>0.00</td>\n",
       "      <td>187362.83</td>\n",
       "      <td>65.22</td>\n",
       "      <td>0.70</td>\n",
       "      <td>113.25</td>\n",
       "      <td>0.65</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>44583 rows × 10 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        timestamp      instance                      pod  pod_cpu_usage  \\\n",
       "0      1745654400  aiops-k8s-01            cartservice-1           0.00   \n",
       "1      1745654400  aiops-k8s-01           emailservice-2           0.00   \n",
       "2      1745654400  aiops-k8s-01         paymentservice-2           0.00   \n",
       "3      1745654400  aiops-k8s-03              adservice-1           0.00   \n",
       "4      1745654400  aiops-k8s-03            cartservice-0           0.01   \n",
       "...           ...           ...                      ...            ...   \n",
       "44578  1745740740  aiops-k8s-08              adservice-0           0.01   \n",
       "44579  1745740740  aiops-k8s-08         paymentservice-1           0.00   \n",
       "44580  1745740740  aiops-k8s-08  recommendationservice-2           0.00   \n",
       "44581  1745740740  aiops-k8s-08             redis-cart-0           0.00   \n",
       "44582  1745740740  aiops-k8s-08        shippingservice-1           0.00   \n",
       "\n",
       "       pod_memory_working_set_bytes  pod_network_receive_bytes  \\\n",
       "0                         915297.93                     209.05   \n",
       "1                        1380832.20                     205.18   \n",
       "2                            392.94                      35.52   \n",
       "3                        8149689.09                      95.59   \n",
       "4                        1984414.34                     678.21   \n",
       "...                             ...                        ...   \n",
       "44578                          0.00                    1009.74   \n",
       "44579                          0.00                       0.00   \n",
       "44580                          0.00                       0.00   \n",
       "44581                          0.00                     633.58   \n",
       "44582                     187362.83                      65.22   \n",
       "\n",
       "       pod_network_receive_packets  pod_network_transmit_bytes  \\\n",
       "0                             2.34                      400.61   \n",
       "1                             1.56                      187.09   \n",
       "2                             0.40                       29.41   \n",
       "3                             0.39                      155.72   \n",
       "4                             6.99                     2325.50   \n",
       "...                            ...                         ...   \n",
       "44578                         8.81                     1802.17   \n",
       "44579                         0.00                        0.00   \n",
       "44580                         0.00                        0.00   \n",
       "44581                         6.62                      377.01   \n",
       "44582                         0.70                      113.25   \n",
       "\n",
       "       pod_network_transmit_packets  pod_processes  \n",
       "0                              2.19              1  \n",
       "1                              1.50              1  \n",
       "2                              0.33              1  \n",
       "3                              0.73              1  \n",
       "4                              6.17              1  \n",
       "...                             ...            ...  \n",
       "44578                          7.88              1  \n",
       "44579                          0.00              1  \n",
       "44580                          0.00              1  \n",
       "44581                          3.49              1  \n",
       "44582                          0.65              1  \n",
       "\n",
       "[44583 rows x 10 columns]"
      ]
     },
     "execution_count": 344,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "read_pod_infra()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 339,
   "id": "f0efe5f4-4067-4a2b-b52a-74593c12f8e4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instance</th>\n",
       "      <th>pod</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>aiops-k8s-01</td>\n",
       "      <td>cartservice-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>aiops-k8s-01</td>\n",
       "      <td>emailservice-2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>aiops-k8s-01</td>\n",
       "      <td>paymentservice-2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>adservice-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>cartservice-0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>checkoutservice-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>currencyservice-0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>frontend-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>paymentservice-0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>productcatalogservice-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>recommendationservice-0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>aiops-k8s-03</td>\n",
       "      <td>shippingservice-0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>aiops-k8s-04</td>\n",
       "      <td>cartservice-2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>aiops-k8s-04</td>\n",
       "      <td>checkoutservice-2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>aiops-k8s-04</td>\n",
       "      <td>productcatalogservice-2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>aiops-k8s-05</td>\n",
       "      <td>frontend-2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>aiops-k8s-06</td>\n",
       "      <td>currencyservice-2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>aiops-k8s-06</td>\n",
       "      <td>emailservice-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>adservice-2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>checkoutservice-0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>currencyservice-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>emailservice-0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>frontend-0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>productcatalogservice-0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>recommendationservice-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>aiops-k8s-07</td>\n",
       "      <td>shippingservice-2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>aiops-k8s-08</td>\n",
       "      <td>adservice-0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>aiops-k8s-08</td>\n",
       "      <td>paymentservice-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>aiops-k8s-08</td>\n",
       "      <td>recommendationservice-2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>aiops-k8s-08</td>\n",
       "      <td>redis-cart-0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>aiops-k8s-08</td>\n",
       "      <td>shippingservice-1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        instance                      pod\n",
       "0   aiops-k8s-01            cartservice-1\n",
       "1   aiops-k8s-01           emailservice-2\n",
       "2   aiops-k8s-01         paymentservice-2\n",
       "3   aiops-k8s-03              adservice-1\n",
       "4   aiops-k8s-03            cartservice-0\n",
       "5   aiops-k8s-03        checkoutservice-1\n",
       "6   aiops-k8s-03        currencyservice-0\n",
       "7   aiops-k8s-03               frontend-1\n",
       "8   aiops-k8s-03         paymentservice-0\n",
       "9   aiops-k8s-03  productcatalogservice-1\n",
       "10  aiops-k8s-03  recommendationservice-0\n",
       "11  aiops-k8s-03        shippingservice-0\n",
       "12  aiops-k8s-04            cartservice-2\n",
       "13  aiops-k8s-04        checkoutservice-2\n",
       "14  aiops-k8s-04  productcatalogservice-2\n",
       "15  aiops-k8s-05               frontend-2\n",
       "16  aiops-k8s-06        currencyservice-2\n",
       "17  aiops-k8s-06           emailservice-1\n",
       "18  aiops-k8s-07              adservice-2\n",
       "19  aiops-k8s-07        checkoutservice-0\n",
       "20  aiops-k8s-07        currencyservice-1\n",
       "21  aiops-k8s-07           emailservice-0\n",
       "22  aiops-k8s-07               frontend-0\n",
       "23  aiops-k8s-07  productcatalogservice-0\n",
       "24  aiops-k8s-07  recommendationservice-1\n",
       "25  aiops-k8s-07        shippingservice-2\n",
       "26  aiops-k8s-08              adservice-0\n",
       "27  aiops-k8s-08         paymentservice-1\n",
       "28  aiops-k8s-08  recommendationservice-2\n",
       "29  aiops-k8s-08             redis-cart-0\n",
       "30  aiops-k8s-08        shippingservice-1"
      ]
     },
     "execution_count": 339,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pod_indics[['instance','pod']].drop_duplicates()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "2f0440ff-a3c3-4734-b7cb-17ea9a977547",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>time</th>\n",
       "      <th>cf</th>\n",
       "      <th>device</th>\n",
       "      <th>instance</th>\n",
       "      <th>kpi_key</th>\n",
       "      <th>kpi_name</th>\n",
       "      <th>kubernetes_node</th>\n",
       "      <th>mountpoint</th>\n",
       "      <th>namespace</th>\n",
       "      <th>object_type</th>\n",
       "      <th>pod</th>\n",
       "      <th>region_health</th>\n",
       "      <th>sql_type</th>\n",
       "      <th>type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2025-06-05T16:00:00Z</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>region_health</td>\n",
       "      <td>Region健康状态</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>pd</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>down-peer-region-count</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2025-06-05T16:00:00Z</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>region_health</td>\n",
       "      <td>Region健康状态</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>pd</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>witness-leader-region-count</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2025-06-05T16:00:00Z</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>region_health</td>\n",
       "      <td>Region健康状态</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>pd</td>\n",
       "      <td>null</td>\n",
       "      <td>191</td>\n",
       "      <td>null</td>\n",
       "      <td>empty-region-count</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2025-06-05T16:00:00Z</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>region_health</td>\n",
       "      <td>Region健康状态</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>pd</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>learner-peer-region-count</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2025-06-05T16:00:00Z</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>region_health</td>\n",
       "      <td>Region健康状态</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>pd</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>pending-peer-region-count</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14385</th>\n",
       "      <td>2025-06-06T15:59:00Z</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>region_health</td>\n",
       "      <td>Region健康状态</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>pd</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>pending-peer-region-count</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14386</th>\n",
       "      <td>2025-06-06T15:59:00Z</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>region_health</td>\n",
       "      <td>Region健康状态</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>pd</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>witness-leader-region-count</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14387</th>\n",
       "      <td>2025-06-06T15:59:00Z</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>region_health</td>\n",
       "      <td>Region健康状态</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>pd</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>oversized-region-count</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14388</th>\n",
       "      <td>2025-06-06T15:59:00Z</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>region_health</td>\n",
       "      <td>Region健康状态</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>pd</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>extra-peer-region-count</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14389</th>\n",
       "      <td>2025-06-06T15:59:00Z</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>region_health</td>\n",
       "      <td>Region健康状态</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>pd</td>\n",
       "      <td>null</td>\n",
       "      <td>203</td>\n",
       "      <td>null</td>\n",
       "      <td>miss-peer-region-count</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>14390 rows × 14 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                       time    cf device instance        kpi_key    kpi_name  \\\n",
       "0      2025-06-05T16:00:00Z  null   null     null  region_health  Region健康状态   \n",
       "1      2025-06-05T16:00:00Z  null   null     null  region_health  Region健康状态   \n",
       "2      2025-06-05T16:00:00Z  null   null     null  region_health  Region健康状态   \n",
       "3      2025-06-05T16:00:00Z  null   null     null  region_health  Region健康状态   \n",
       "4      2025-06-05T16:00:00Z  null   null     null  region_health  Region健康状态   \n",
       "...                     ...   ...    ...      ...            ...         ...   \n",
       "14385  2025-06-06T15:59:00Z  null   null     null  region_health  Region健康状态   \n",
       "14386  2025-06-06T15:59:00Z  null   null     null  region_health  Region健康状态   \n",
       "14387  2025-06-06T15:59:00Z  null   null     null  region_health  Region健康状态   \n",
       "14388  2025-06-06T15:59:00Z  null   null     null  region_health  Region健康状态   \n",
       "14389  2025-06-06T15:59:00Z  null   null     null  region_health  Region健康状态   \n",
       "\n",
       "      kubernetes_node mountpoint namespace object_type   pod  region_health  \\\n",
       "0                null       null      null          pd  null              0   \n",
       "1                null       null      null          pd  null              0   \n",
       "2                null       null      null          pd  null            191   \n",
       "3                null       null      null          pd  null              0   \n",
       "4                null       null      null          pd  null              0   \n",
       "...               ...        ...       ...         ...   ...            ...   \n",
       "14385            null       null      null          pd  null              0   \n",
       "14386            null       null      null          pd  null              0   \n",
       "14387            null       null      null          pd  null              0   \n",
       "14388            null       null      null          pd  null              0   \n",
       "14389            null       null      null          pd  null            203   \n",
       "\n",
       "      sql_type                         type  \n",
       "0         null       down-peer-region-count  \n",
       "1         null  witness-leader-region-count  \n",
       "2         null           empty-region-count  \n",
       "3         null    learner-peer-region-count  \n",
       "4         null    pending-peer-region-count  \n",
       "...        ...                          ...  \n",
       "14385     null    pending-peer-region-count  \n",
       "14386     null  witness-leader-region-count  \n",
       "14387     null       oversized-region-count  \n",
       "14388     null      extra-peer-region-count  \n",
       "14389     null       miss-peer-region-count  \n",
       "\n",
       "[14390 rows x 14 columns]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "load_in_file('/app/jupyter/aiops/phaseone/2025-06-06/metric-parquet/other/infra_pd_region_health_2025-06-06.parquet')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c91008c7-132d-453b-90b7-e403607b20d0",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
